Имя: Пароль:
1C
 
Выгрузка РН в формате mmo
0 if1c
 
25.05.11
13:08
Добрый день. Поделитесь пожалуйста обработкой по выгрузке РН в mmo(кто работал с аптеками тот в курсе).
Написал такую под 8.1, щаз срочно понадобилась под 7.7, а писать нет времени. Буду очень признателен.
Почта в личке
1 if1c
 
25.05.11
18:40
up
2 VasilyKushnir
 
25.05.11
19:42
Аська и почта тоже в личке - стукнись завтра после 8-00 по Киевскому
3 Ork
 
25.05.11
20:13
(0) На. Модуль формы.

Перем ПрефиксСохранения;

Процедура Сформировать()
   Перем ИмяФайла, ИмяФайлаСообщения, Текст;
   Если Док.Выбран()=0 Тогда
       Предупреждение("Не указан документ!");
       Возврат;
   КонецЕсли;
   ИмяФайла=СокрЛП(ПутьВыгрузки)+"\NKL"+СокрЛП(Док.НомерДок)+".mmo";
   ИмяФайлаСообщения=СокрЛП(ПутьВыгрузки)+"\NKL"+СокрЛП(Док.НомерДок)+".txt";
   Текст=СоздатьОбъект("Текст");
   //***************          Секция 1
   Стр="РАСХОДНАЯ_НАКЛАДНАЯ"+Симв(9)+СокрЛП(ОКПОПоставщика)+Симв(9)+СокрЛП(ОКПОПолучателя)+Симв(9)+"версия_3";
   Текст.ДобавитьСтроку(Стр);
   //***************          Секция 2
   Стр=
   СокрЛП(Док.НомерДок)+Симв(9)+        //1 Номер документа Строка 25
   СокрЛП(Док.ДатаДок)+Симв(9)+        //2 Дата документа Дата 10
   ""+Симв(9)+                            //3 Номер Налоговой накладной Строка 25
   ""+Симв(9)+                            //4 Наименование поставщика Строка 50
   ""+Симв(9)+                            //5 Банк Строка 50
   ""+Симв(9)+                            //6 Р/с Строка 25
   ""+Симв(9)+                            //7 МФО Строка 10
   "Наш телефон"+Симв(9)+                    //8 Телефоны Строка 30
   "Наш адрес"+Симв(9)+                        //9 Адрес поставщика Строка 100
   ""+Симв(9)+                            //10 Номер лицензии Строка 25
   ""+Симв(9)+                            //11 Срок лицензии Дата 10
   Формат(Док.Сумма,"Ч15.2")+Симв(9)+    //12 Сумма без НДС Число 15.2
   Формат(Док.Сумма,"Ч15.2")+Симв(9)+    //13 Сумма с НДС Число 15.2
   ""+Симв(9)+                            //14 Срок оплаты Дата 10
   "1"+Симв(9)+                        //15 Признак: цена включает НДС или не вкл.НДС Число 1
   ""+Симв(9)+                            //16 Код метода синхронизации Число 2
   "2"+Симв(9);                        //17 Число значащих цифр дробной части реквизита "Сумма отпускная" в строках документа Число 1
   Текст.ДобавитьСтроку(Стр);
   
   //***************          Секция 3
   Стр="";                                //1 Строка комментария Строка 200
   Текст.ДобавитьСтроку(Стр);

   //***************          Секция 4
   Док.ВыбратьСтроки();
   Пока Док.ПолучитьСтроку()=1 Цикл
       Состояние("Выполнено "+Док.НомерСтроки+" из "+Док.КоличествоСтрок());
       Стр=
       Строка(Док.Товар.Код)+Симв(9)+        //1 ID товара Строка 20
       Док.Товар.Наименование+Симв(9)+        //2 Наименование товара Строка 100
       ""+Симв(9)+                            //3 ID производителя Строка 20
       Док.Товар.Производитель+Симв(9)+    //4 Наименование производителя Строка 50
       ""+Симв(9)+                            //5 ID внешний (например Морион) Строка 20
       ""+Симв(9)+                            //6 Номер регистрации Строка 40
       ""+Симв(9)+                            //7 Дата регистрации Дата 10
       ""+Симв(9)+                            //8 Срок регистрации Дата 10
       "20"+Симв(9)+                        //9 Процент НДС Число 3
       ""+Симв(9)+                            //10 Макс процент от тамож Число 3
       ""+Симв(9)+                            //11 № Серии Строка 16
       ""+Симв(9)+                            //12 Номер сертификата Строка 20
       ""+Симв(9)+                            //13 Дата сертификата Дата 10
       ""+Симв(9)+                            //14 Срок годности Дата 10
       "шт"+Симв(9)+                        //15 Ед Изм Строка 5
       Формат(Док.Кол, "Ч15.3")+Симв(9)+    //16 Количество Число 15.3
       Формат(0, "Ч15.3")+Симв(9)+            //17 Цена Складская Число 16.4
       Формат(Док.Цена, "Ч16.4")+Симв(9)+    //18 Цена Таможенная Число 16.4
       Формат(0, "Ч6.2")+Симв(9)+            //19 Процент наценки поставщика Число 6.2
       Формат(Док.Цена, "Ч16.4")+Симв(9)+    //20 Цена Отпускная (для аптеки это закупочная) Число 16.4
       Формат(Док.Сумма, "Ч16.4");            //21 Сумма отпускная Число 16.4
       Текст.ДобавитьСтроку(Стр);
   КонецЦикла;
   Текст.Записать(ИмяФайла);
   Если флОтправить=1 Тогда
       Если ПустаяСтрока(EMail)=1 Тогда
           Предупреждение("Не указан почтовый адрес!");
           Возврат;
       КонецЕсли;
       Кому=СокрЛП(EMail);
       Тема="""Накладная №"+Док.НомерДок+" от "+Док.ДатаДок+"""";
       Текст=СоздатьОбъект("Текст");
       Текст.ДобавитьСтроку("Во вложении накладная №"+Док.НомерДок+" от "+Док.ДатаДок);
       Текст.Записать(ИмяФайлаСообщения);
       
       СтрокаКоманды="""C:\Program Files\The Bat!\thebat.exe"" /MAIL";
       СтрокаКоманды=СтрокаКоманды+"TO="+Кому;
       //СтрокаКоманды=СтрокаКоманды+";F=Mail.ru\Исходящие";
       СтрокаКоманды=СтрокаКоманды+";S="+Тема;
       СтрокаКоманды=СтрокаКоманды+";TEXT="""+ИмяФайлаСообщения+"""";
       СтрокаКоманды=СтрокаКоманды+";FILE="+""""+ИмяФайла+"""";
       ЗапуститьПриложение(СтрокаКоманды);
   КонецЕсли;
КонецПроцедуры

Процедура ПриНачалеВыбораЗначения(Контрол, Флаг)
   Перем ВыбКаталог;
   Если Контрол="ПутьВыгрузки" Тогда
       Флаг=0;
       ВыбКаталог=СокрЛП(ПутьВыгрузки);
       Если ФС.ВыбратьКаталог(ВыбКаталог, "Экспорт накладной")=0 Тогда
           Возврат;
       КонецЕсли;
       ПутьВыгрузки=ВыбКаталог;
   КонецЕсли;
КонецПроцедуры

Процедура ПриОткрытии()
   ПутьВыгрузки=    ВосстановитьЗначение(ПрефиксСохранения+"ПутьВыгрузки");
   ОКПОПоставщика=    ВосстановитьЗначение(ПрефиксСохранения+"ОКПОПоставщика");
   ОКПОПолучателя=    ВосстановитьЗначение(ПрефиксСохранения+"ОКПОПолучателя");
   EMail=            ВосстановитьЗначение(ПрефиксСохранения+"EMail");
   Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
       Док=Форма.Параметр.Получить("Док");
       EMail=Док.Клиент.EMail;
   КонецЕсли;
КонецПроцедуры
   
Процедура ПриЗакрытии()
   СохранитьЗначение(ПрефиксСохранения+"ПутьВыгрузки",    ПутьВыгрузки);
   СохранитьЗначение(ПрефиксСохранения+"ОКПОПоставщика",    ОКПОПоставщика);
   СохранитьЗначение(ПрефиксСохранения+"ОКПОПолучателя",    ОКПОПолучателя);
   СохранитьЗначение(ПрефиксСохранения+"EMail",            EMail);
КонецПроцедуры
   
ПрефиксСохранения="ЭкспортММО";
4 Ork
 
25.05.11
20:32
В (3) модуль обработки.
Получает на входе СписокЗначений, где первым параметром документ, вторым мыло. И выкладывает файл на отправку в TheBat.
5 if1c
 
26.05.11
10:37
Ork, Спасибо большое все работает.
Василий, выслал на почту.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой