8.х Обработка - выгрузка данных в ТСД

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем Казбек05даг, 23 дек 2013.

  1. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    У меня 1С УТ 8,2 ред. 10,3. Необходима обработка для выгрузки и загрузки данных в ТСД Casio DT-X7, конфигурация Mobile Logistic 5.0 (Инвентаризация CE), кто может помочь?? буду очень благодарен
  2. NcSteel
    Offline

    NcSteel Опытный в 1С

    Регистрация:
    29 окт 2013
    Сообщения:
    78
    Симпатии:
    0
    Баллы:
    26
    Вроде обработка по работе с ТСД заложена в УТ... надо просто поставить драйвер и возможно ее немного допилить. ИМХО, но готовое решение точно не найдешь.
  3. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    Дело в том, что обработка заложенная в УТ при выгрузке товара пишет - недопустимое значение запись №1. Посмотрел через тест-драйвер, там в поле - 0 обязательно надо выгрузить числовое значение, а 1с в поле 0 вообще не дает выгрузить, начинает только с 1. Как бы сделать так, чтобы оно начинало с поля 0?
  4. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    Ни кто не подскажет?
  5. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Обработку выгрузки за вас допилить ?
  6. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    Нет, подсказать как допилить его, помочь
  7. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Смотрите отладчиком где и как заполняются эти поля, далее допиливаете чтобы индекс начинался не с "1", а с "0".
  8. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    Код:
    ///////////////////////////////////////////////////////////////////////////////
    //// ПЕРЕМЕННЫЕ МОДУЛЯ
    Перем мПолеШтрихкод;
    Перем мПолеНаименованиеНоменклатуры;
    Перем мПолеАртикулНоменклатуры;
    Перем мПолеХарактеристикаНоменклатуры;
    Перем мПолеСерияНоменклатуры;
    Перем мПолеЕдиницаИзмерения;
    Перем мПолеКодНоменклатуры;
    Перем мПолеЦенаНоменклатуры;
    Перем мПолеКоличествоНоменклатуры;
    Перем мПолеКачество;
    
    ///////////////////////////////////////////////////////////////////////////////
    //// ЭКСПОРТНЫЕ ПРОЦЕДУРЫ
    // Функция осуществляет формирование соответствия, содержащего поля, которые
    // учтены в данном формате данных.
    //
    // Параметры:
    //  Штрихкод					   - <Строка>
    //								 - Штрихкод товара.
    //
    //  Номенклатура				   - <СправочникСсылка.Номенклатура>
    //								 - Номенклатура.
    //
    //  ЕдиницаИзмерения			   - <СправочникСсылка.ЕдиницыИзмерения>
    //								 - Единица измерения номенклатуры.
    //
    //  ХарактеристикаНоменклатуры	 - <СправочникСсылка.ХарактеристикиНоменклатуры>
    //								 - Характеристика номенклатуры.
    //
    //  СерияНоменклатуры			  - <СправочникСсылка.СерииНоменклатуры>
    //								 - Серия номенклатуры.
    //
    //  Качество					   - <СправочникСсылка.Качество>
    //								 - Качество.
    //
    //  Цена						   - <Число>
    //								 - Цена номенклатуры.
    //
    //  Количество					 - <Число>
    //								 - Количество номенклатуры.
    //
    // Возвращаемое значение:
    //  <Соответствие>				 - Соответствие полей.
    //
    Функция ПолучитьСоответствиеПолейТСД(Штрихкод, Номенклатура, ЕдиницаИзмерения,
    ХарактеристикаНоменклатуры, СерияНоменклатуры,
    Качество, Цена, Количество) Экспорт
    Результат			    = Новый Соответствие();
    Поле					 = Неопределено;
    НаименованиеНоменклатуры = СокрЛП(Номенклатура);
    Артикул				  = "";
    Характеристика		   = СокрЛП(ХарактеристикаНоменклатуры);
    Серия				    = СокрЛП(СерияНоменклатуры);
    ЕдИзм				    = СокрЛП(ЕдиницаИзмерения);
    КодНоменклатуры		  = "";
    ЦенаСтр				  = Формат(Цена, "ЧЦ=15; ЧДЦ=2; ЧН=0; ЧГ=0");
    КолвоСтр				 = Формат(Количество, "ЧЦ=15; ЧДЦ=2; ЧН=0; ЧГ=0");
    КачествоСтр			  = СокрЛП(Качество);
    Для Каждого Поле Из СвязываемыеПоля Цикл
    ИмяПоля	  = "Поле" + Формат(Поле.ПолеТСД, "ЧДЦ=0; ЧН=0; ЧГ=0");
    
    Если	  Поле.ПараметрНоменклатуры = мПолеШтрихкод Тогда
    Результат[ИмяПоля] = Штрихкод;
    ИначеЕсли Поле.ПараметрНоменклатуры = мПолеНаименованиеНоменклатуры Тогда
    Результат[ИмяПоля] = НаименованиеНоменклатуры;
    ИначеЕсли Поле.ПараметрНоменклатуры = мПолеАртикулНоменклатуры Тогда
    Результат[ИмяПоля] = Артикул;
    ИначеЕсли Поле.ПараметрНоменклатуры = мПолеХарактеристикаНоменклатуры Тогда
    Результат[ИмяПоля] = Характеристика;
    ИначеЕсли Поле.ПараметрНоменклатуры = мПолеСерияНоменклатуры Тогда
    Результат[ИмяПоля] = Серия;
    ИначеЕсли Поле.ПараметрНоменклатуры = мПолеЕдиницаИзмерения Тогда
    Результат[ИмяПоля] = ЕдИзм;
    ИначеЕсли Поле.ПараметрНоменклатуры = мПолеКодНоменклатуры Тогда
    Результат[ИмяПоля] = КодНоменклатуры;
    ИначеЕсли Поле.ПараметрНоменклатуры = мПолеЦенаНоменклатуры Тогда
    Результат[ИмяПоля] = ЦенаСтр;
    ИначеЕсли Поле.ПараметрНоменклатуры = мПолеКоличествоНоменклатуры Тогда
    Результат[ИмяПоля] = КолвоСтр;
    Иначе // Если Поле.ПараметрНоменклатуры = мПолеКачество
    Результат[ИмяПоля] = КачествоСтр;
    КонецЕсли;
    КонецЦикла;
    Возврат Результат;
    КонецФункции // ПолучитьСоответствиеПолейТСД()
    // Процедура возвращает параметры номенклатуры из соответствия полей ТСД.
    //
    // Параметры:
    //  СоответствиеПолей - <Соответствие>
    //				    - Соответствие, содержащее значения полей таблицы ТСД.
    //					  Значению поля X ТСД соответствует ключ "ПолеX".
    //
    //  Штрихкод		  - <Строка>
    //				    - Выходной параметр; штрихкод товара.
    //
    //  Количество	    - <Число>
    //				    - Выходной параметр; количество товара.
    //
    Процедура ПолучитьСодержимоеСоответствияПолейТСД(СоответствиеПолей, Штрихкод,
    Количество) Экспорт
    СтрокаШтрихкод   = СвязываемыеПоля.Найти(Перечисления.ТСДПоляДанных.ШтрихКод,
    "ПараметрНоменклатуры");
    СтрокаКоличество = СвязываемыеПоля.Найти(Перечисления.ТСДПоляДанных.КоличествоНаСкладе,
    "ПараметрНоменклатуры");
    СтрокаШтрихкод   = ?(СтрокаШтрихкод = Неопределено,
    "",
    "Поле" + Формат(СтрокаШтрихкод.ПолеТСД, "ЧГ=0"));
    СтрокаКоличество = ?(СтрокаКоличество = Неопределено,
    "",
    "Поле" + Формат(СтрокаКоличество.ПолеТСД, "ЧГ=0"));
    ВремШтрихкод	 = СоответствиеПолей[СтрокаШтрихкод];
    ВремКоличество   = СоответствиеПолей[СтрокаКоличество];
    Штрихкод		 = ?(ВремШтрихкод = Неопределено, "", ВремШтрихкод);
    Попытка
    Количество = Число(ВремКоличество);
    Исключение
    Количество = 0;
    КонецПопытки;
    КонецПроцедуры // ПолучитьСодержимоеСоответствияПолейТСД()
    ///////////////////////////////////////////////////////////////////////////////
    //// ОБРАБОТЧИКИ СОБЫТИЙ
    // Процедура - обработчик события "ПередЗаписью"
    //
    // Параметры
    //  Отказ - <Булево>
    //	    - признак отказа от записи элемента. Если в теле
    //		  процедуры-обработчика установить данному параметру
    //		  значение Истина, запись элемента выполнена не будет
    //
    Процедура ПередЗаписью(Отказ)
    
    Перем Ошибки;
    Перем ШтрихКод;
    Перем ЕстьШтрихКод;
    Перем ЗаполненыПараметрыНоменклатуры;
    Перем ЗаполненыПоляТСД;
    Перем УникальныеПараметрыНоменклатуры;
    Перем УникальныеПоляТСД;
    Перем ПараметрыНоменклатуры;
    Перем ПоляТСД;
    Перем СтрокаТЧ;
    
    Если Не ОбменДанными.Загрузка Тогда
    
    Ошибки						  = "";
    ЕстьШтрихКод				    = Ложь;
    ЗаполненыПараметрыНоменклатуры  = Истина;
    ЗаполненыПоляТСД			    = Истина;
    УникальныеПараметрыНоменклатуры = Истина;
    УникальныеПоляТСД			   = Истина;
    ПараметрыНоменклатуры		   = Новый Соответствие();
    ПоляТСД						 = Новый Соответствие();
    
    Если НЕ ЗначениеЗаполнено(Наименование) Тогда
    Ошибки = " - Не задано имя формата.";
    КонецЕсли;
    
    Для Каждого СтрокаТЧ Из СвязываемыеПоля Цикл
    
    Если СтрокаТЧ.ПараметрНоменклатуры = Перечисления.ТСДПоляДанных.ШтрихКод Тогда
    ЕстьШтрихКод = Истина;
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(СтрокаТЧ.ПараметрНоменклатуры) Тогда
    ЗаполненыПараметрыНоменклатуры = Ложь;
    ИначеЕсли ПараметрыНоменклатуры[СтрокаТЧ.ПараметрНоменклатуры] = Истина Тогда
    УникальныеПараметрыНоменклатуры = Ложь;
    Иначе
    ПараметрыНоменклатуры.Вставить(СтрокаТЧ.ПараметрНоменклатуры, Истина);
    КонецЕсли;
    
    Если НЕ ЗначениеЗаполнено(СтрокаТЧ.ПолеТСД) Тогда
    ЗаполненыПоляТСД = Ложь;
    ИначеЕсли ПоляТСД[СтрокаТЧ.ПолеТСД] = Истина Тогда
    УникальныеПоляТСД = Ложь;
    Иначе
    ПоляТСД.Вставить(СтрокаТЧ.ПолеТСД, Истина);
    КонецЕсли;
    
    КонецЦикла;
    
    Если Не ЕстьШтрихКод Тогда
    Если Не ПустаяСтрока(Ошибки) Тогда
    Ошибки = Ошибки + "
    |";
    КонецЕсли;
    Ошибки = Ошибки + " - Параметр номенклатуры ""Штрихкод"" должен выгружаться в обязательном порядке.";
    КонецЕсли;
    
    Если Не ЗаполненыПараметрыНоменклатуры Тогда
    Если Не ПустаяСтрока(Ошибки) Тогда
    Ошибки = Ошибки + "
    |";
    КонецЕсли;
    Ошибки = Ошибки + " - Обнаружены незаполненные параметры номенклатуры.";
    КонецЕсли;
    
    Если Не ЗаполненыПоляТСД Тогда
    Если Не ПустаяСтрока(Ошибки) Тогда
    Ошибки = Ошибки + "
    |";
    КонецЕсли;
    Ошибки = Ошибки + " - Обнаружены незаполненные поля терминала.";
    КонецЕсли;
    
    Если Не УникальныеПараметрыНоменклатуры Тогда
    Если Не ПустаяСтрока(Ошибки) Тогда
    Ошибки = Ошибки + "
    |";
    КонецЕсли;
    Ошибки = Ошибки + " - Обнаружен параметр номенклатуры, выгружаемый в два поля одновременно.";
    КонецЕсли;
    
    Если Не УникальныеПоляТСД Тогда
    Если Не ПустаяСтрока(Ошибки) Тогда
    Ошибки = Ошибки + "
    |";
    КонецЕсли;
    Ошибки = Ошибки + " - Обнаружено поле терминала, в которое выгружаются несколько параметров одновременно.";
    КонецЕсли;
    
    Если Не ПустаяСтрока(Ошибки) Тогда
    ОбщегоНазначения.СообщитьОбОшибке("При попытке записи были обнаружены следующие ошибки:
    |" + Ошибки);
    Отказ = Истина;
    КонецЕсли;
    
    КонецЕсли;
    КонецПроцедуры // ПередЗаписью()
    ///////////////////////////////////////////////////////////////////////////////
    //// ОПЕРАТОРЫ ОСНОВНОЙ ПРОГРАММЫ
    мПолеШтрихкод				   = Перечисления.ТСДПоляДанных.ШтрихКод;
    мПолеНаименованиеНоменклатуры   = Перечисления.ТСДПоляДанных.НоменклатураНаименование;
    мПолеАртикулНоменклатуры	    = Перечисления.ТСДПоляДанных.НоменклатураАртикул;
    мПолеХарактеристикаНоменклатуры = Перечисления.ТСДПоляДанных.НоменклатураХарактеристика;
    мПолеСерияНоменклатуры		  = Перечисления.ТСДПоляДанных.НоменклатураСерия;
    мПолеЕдиницаИзмерения		   = Перечисления.ТСДПоляДанных.НоменклатураИзмерение;
    мПолеКодНоменклатуры		    = Перечисления.ТСДПоляДанных.НоменклатураКод;
    мПолеЦенаНоменклатуры		   = Перечисления.ТСДПоляДанных.НоменклатураЦена;
    мПолеКоличествоНоменклатуры	 = Перечисления.ТСДПоляДанных.КоличествоНаСкладе;
    мПолеКачество				   = Перечисления.ТСДПоляДанных.Качество;





    Что тут надо изменить? (я вообще чайник в этом деле)
  9. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Я бы обратил внимание на цикл:
    Код:
    Для Каждого СтрокаТЧ Из СвязываемыеПоля Цикл
  10. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    Я так понял что этот цикл проверяет заполненность значений и их уникальность, но не то чем оно заполнено, да?
  11. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    это нужно отладчиком трассировать, возможно заполнение идет немного раньше.
  12. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    ну это весь модуль объекта - тсдформатыданных
  13. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    А если сделать так. При получении данных из формы указать типа - если поле тсд пустое, то поле тсд равна 0?
  14. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Ну походу у соответствия индекс начинается с 1, а не с 0, тогда выход какой, отловить место, где непосредственно это соответсвие выгружается в ТСД, и перед выгрузгкой, как-то подставлять индекс 0, т.е. по сути, написать свою выгрузку. Можно через соответствие, или ТЗ.
  15. TopicStarter Overlay
    Казбек05даг
    Offline

    Казбек05даг Опытный в 1С

    Регистрация:
    5 авг 2012
    Сообщения:
    205
    Симпатии:
    2
    Баллы:
    29
    Не могу найти((
  16. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.771
    Симпатии:
    509
    Баллы:
    204
    Где-то общих модулях. Попробуйте воспользоваться поиском по имени функции/процедуры. Откуда-то должно вызываться.
Похожие темы
  1. Ivan_
    Ответов:
    0
    Просмотров:
    1.182
  2. Snickbw
    Ответов:
    18
    Просмотров:
    16.216
  3. mac9m6a
    Ответов:
    1
    Просмотров:
    2.142
  4. Вишенка
    Ответов:
    0
    Просмотров:
    803
  5. Reader
    Ответов:
    2
    Просмотров:
    2.197
Загрузка...

Поделиться этой страницей