24.07.2013 15:37
whitewizard
 
Очень давно делал для 1С 7.7
Цитата:
//-----------------------------------------------------------------------
Процедура Выполнить()
Текст = СоздатьОбъект("Текст");
файл = КаталогБазыДанных()+"F25.DAT";
ФС.НайтиПервыйФайл(файл);
Номенклатура=СоздатьОбъект("Справочник.Номенклатура");
Номенклатура.ВыбратьЭлементы();
Строкаданных="";
Выходнаястрока="";
Пока Номенклатура.ПолучитьЭлемент()=1 Цикл
ПромТовар=Номенклатура.ТекущийЭлемент();
Если ПромТовар.ЭтоГруппа()=0 Тогда
Если ПромТовар.ТипТовара=Перечисление.ТипыТоваров.Весовой Тогда
СпрСкидкиНаТовар=СоздатьОбъект("Справочник.СкидкиНаТовар");
СпрСкидкиНаТовар.ИспользоватьВладельца(ПромТовар);
НаименованиеHEX="";
НаименованиеHEX1="";
Наименование=СокрП(ПромТовар.Наименование);
Для I=1 По СтрДлина(Наименование) Цикл
НаименованиеHEX=НаименованиеHEX+СимвHEX(Сред(Наименование,I,1));
КонецЦикла;

Если СтрДлина(НаименованиеHEX)>50 Тогда
НаименованиеHEX1=Сред(НаименованиеHEX,51,50);
НаименованиеHEX=Лев(НаименованиеHEX,50);
КонецЕсли;

PLU=Формат(ПромТовар.Код,"Ч(0)8.0");
ПромСрокХранения=ПромТовар.СрокХранения;
ПромВесТары=Число(ПромТовар.ВесТары);

ПромСкидка=СпрСкидкиНаТовар.Скидка;
ПромЦена=(ПромТовар.РозничнаяЦена)*(100-ПромСкидка)/100;

строкаданных="50005D2611"+Формат(100*ПромЦена,"Ч(0)8.0")+
"1105"+Константа.ПрефиксВесовогоТовара+Формат(ПромТовар.Код,"Ч(0)5.0")+
"0000001"+"0005"+"000500000000000007"+DecHex(СтрДлина(наименованиеHex)/2)+НаименованиеHEX+
?(НаименованиеHex1="","","0D07"+DecHex(СтрДлина(наименованиеHex1)/2)+НаименованиеHEX1)+"0C00";
выходнаястрока=выходнаястрока+PLU+"00"+DecHex(Цел((СтрДлина(строкаданных)+12)/2))+строкаданных;
КонецЕсли;
КонецЕсли;
КонецЦикла;
Текст.ДобавитьСтроку(выходнаястрока);
Текст.Записать(файл);

Для I=1 По СписокВесов.РазмерСписка() Цикл
Если СписокВесов.Пометка(I)=1 Тогда
ПромВесы=СписокВесов.ПолучитьЗначение(I);
ФС.КопироватьФайл(файл,КаталогБазыДанных()+"SM"+Строка(Формат(ПромВесы.Код,"Ч(0)3"))+"F25.DAT",0);
КомандаСистемы(СокрЛП(КаталогБазыДанных())+"twswtcp.exe F25.DAT "+ПромВесы.Код);
Сообщить("Выгружен весовой товар в весы "+ПромВесы,);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
//-----------------------------------------------------------------------
Процедура ПриОткрытии()
Если КомпонентаВесыЗагружена <>1 Тогда
Предупреждение("Компонента для весов не загружена!",3);
СтатусВозврата(0);
КонецЕсли;
Спр=СоздатьОбъект("Справочник.Весы");
Спр.ПорядокКодов();
Спр.ВыбратьЭлементы();
Пока Спр.ПолучитьЭлемент()=1 Цикл
Если Спр.ПометкаУдаления()=1 Тогда
Продолжить;
КонецЕсли;
Если Спр.ЭтоГруппа()=1 Тогда
Продолжить;
КонецЕсли;
СписокВесов.ДобавитьЗначение(Спр.ТекущийЭлемент());
КонецЦикла;

Если СокрЛП(Форма.Параметр)="" Тогда
Иначе
Для I=1 По СписокВесов.РазмерСписка() Цикл
СписокВесов.Пометка(I,1);
КонецЦикла;
Выполнить();
СтатусВозврата(0);
КонецЕсли;
КонецПроцедуры
//-----------------------------------------------------------------------
Процедура Пометка(Режим)
Для I=1 По СписокВесов.РазмерСписка() Цикл
СписокВесов.Пометка(I,Режим);
КонецЦикла;
КонецПроцедуры
//-----------------------
Функция ДоступностьКнопок()
Если СписокВесов.РазмерСписка()=0 Тогда
Форма.КнопкаВключить.Доступность(0);
Форма.КнопкаВыключить.Доступность(0);
Иначе
Форма.КнопкаВключить.Доступность(1);
Форма.КнопкаВыключить.Доступность(1);
КонецЕсли;
Для I=1 По СписокВесов.РазмерСписка() Цикл
Если СписокВесов.Пометка(I)=1 Тогда
Форма.Выполнить.Доступность(1);
Возврат "";
КонецЕсли;
КонецЦикла;
Форма.Выполнить.Доступность(0);
Возврат "";
КонецФункции
//-----------------------
24.07.2013 18:30
masheka
 
whitewizard, Огромное спасибо за Код, который я даже не просил :) Мне б файлика типа "F25.DAT" хватило, только для проверки работоспособности драйвера со свежераспракованным см-100р. Как проверю - отпишусь
25.07.2013 13:27
masheka
 
Нашел файлики f25,f34,f38 в папке с twswtcp.dll, высланной мне для тестирования С+, за что им Спасибо. Этикетку и товары успешно прогрузил в новые весы sm-100p. Буду пробовать реализовать автомат выгрузки из 1С с помощью twswtcp и digiwtcp, взятыми из Хранилища, за что спасибо Форуму. Если файлы для тестов кому нужны - могу выложить
26.07.2013 16:21
masheka
 
Написал нечто вроде кода whitewizard'a, весы скушали, добавки попросили. Жаль только бумаги этикеточной пока нет, чтобы проверить правильность формата штрихкода и формата самой этикетки.

PS Тем, кто будет использовать Код WhiteWizard'a советую не забывать при реализации СимвHex, что весы просят DOS кодировку текста.
Часовой пояс GMT +3, время: 23:43.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.