Бондаренко Денис

0
Рейтинг

Денис Бондаренко
MaCCapAkIII



  •   Регистрация: 06.04.2015 (2 года назад)

  •   Был(а) на сайте: вчера в 18:35

Комментарии

DevРегистрация изменений для узла обмена с ККМOffline#1 30.06.17 19:05
Добрый день.
Есть задача. Организовать в УТ11.1 выгрузку в ККМOffline актуальных остатков. То есть, вечером магазины присылают продажи, УТ их загружает и утром, перед открытием магазина, выгружает справочники с актуальными остатками.
Что сделал:
1. Завел рабочее место ХХХ, к которому подключил все ККМOffline, работающие на Штрих-М:Кассире (которым нужны файлы со справочником товаров);
2. Сделал регламентное задание, которое использует типовые механизмы формирования списка товаров для выгрузки.

В результате РЗ отрабатывает, но файлы пустые. Ни продажи, ни перемещения товаров по складам никакой реакции не вызывают - файлы справочников пустые. такое ощущение, что для узла обмена с ККМ, который я завел, не регистрируются изменения остатков товаров при движениях...

Прошу подсказать каким образом вообще регистрируются изменения остатков по каждой ККМ в УТ (не могу разобраться в принципе) или как можно решить подобную проблему? Возможно принудительно регистрировать изменения для узла...

В УТ есть штатная функция, которая возвращает список товаров для выгрузки, возможно в ней что-то не так... Для моего случая...

Код
// Функция возвращает таблицу товаров с данными к выгрузке в устройство
//
// Параметры:
//  Устройство - <СправочникСсылка.ПодключаемоеОборудование> - Устройство для которого необходимо получить данные
//  ТолькоИзмененные - <Булево> - Флаг получения только измененных данных
//  ОбновитьКодыТоваров - <Булево> - Флаг обновления кодов товаров перед получением данных.
//
// Возвращаемое значение:
//  <ТаблицаЗначений> товаров к выгрузке
//
Функция ПолучитьТаблицуТоваровКВыгрузке(Устройство, Параметры, ОбновитьКодыТоваров = Ложь) Экспорт
   
   УстановитьПривилегированныйРежим(Истина);
   
   ПрефиксУзлаШтрихкода                      = РегистрыСведений.ШтрихкодыНоменклатуры.ПрефиксУзлаШтрихкода();
   МаксимальноеЗначениеКодаВесовыхШтрихкодов = РегистрыСведений.ШтрихкодыНоменклатуры.ПолучитьМаксимальноеЗначениеКодаВесовыхШтрихкодов();
   МаксимальныйКодВесовогоТовара             = РегистрыСведений.ШтрихкодыНоменклатуры.МаксимальныйКодВесовогоТовара();
   
   ИспользоватьСерииНоменклатуры = ПолучитьФункциональнуюОпцию("ИспользоватьСерииНоменклатурыСклад", Новый Структура("Склад", Параметры.Склад));
   
   Если ОбновитьКодыТоваров Тогда
      ОбновитьКодыТоваров(Параметры.ПравилоОбмена);
   КонецЕсли;
   
   Запрос = Новый Запрос(
   "ВЫБРАТЬ
   |   КодыТоваровПодключаемогоОборудованияOffline.Используется КАК Используется,
   |   КодыТоваровПодключаемогоОборудованияOffline.Код КАК Код,
   |   КодыТоваровПодключаемогоОборудованияOffline.Номенклатура КАК Номенклатура,
   |   ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Номенклатура.Наименование,"""")       КАК НоменклатураНаименование,
   |   ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Номенклатура.НаименованиеПолное,"""") КАК НоменклатураНаименованиеПолное,
   |   КодыТоваровПодключаемогоОборудованияOffline.Характеристика КАК Характеристика,
   |   ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Характеристика.Наименование, """")       КАК ХарактеристикаНаименование,
   |   ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Характеристика.НаименованиеПолное, """") КАК ХарактеристикаНаименованиеПолное,
   |   ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Номенклатура.ЕдиницаИзмерения.Наименование, """") КАК ЕдиницаИзмеренияНаименование,
   |   КодыТоваровПодключаемогоОборудованияOffline.Упаковка КАК Упаковка,
   |   ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Упаковка.Наименование, """") КАК УпаковкаНаименование,
   |   ЕСТЬNULL(ШтрихкодыНоменклатуры.Штрихкод, """") КАК Штрихкод,
   |   (ЕСТЬNULL(КодыТоваровПодключаемогоОборудованияOffline.Упаковка.Коэффициент, 1)
   |      / ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Упаковка.Коэффициент, 1)) *
   |   ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена,
   |   ЕСТЬNULL(СвободныеОстатки.ВНаличииОстаток - СвободныеОстатки.ВРезервеСоСкладаОстаток - СвободныеОстатки.ВРезервеПодЗаказОстаток, 0) КАК Остаток,
   |   ВЫБОР
   |      КОГДА КодыТоваровПодключаемогоОборудованияOffline.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
   |         ТОГДА ВЫБОР КОГДА КодыТоваровПодключаемогоОборудованияOffline.Номенклатура.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая) ТОГДА Истина Иначе Ложь КОНЕЦ
   |      ИНАЧЕ ВЫБОР КОГДА КодыТоваровПодключаемогоОборудованияOffline.Упаковка.ЕдиницаИзмерения.ТипЕдиницыИзмерения = ЗНАЧЕНИЕ(Перечисление.ТипыЕдиницИзмерения.Весовая) ТОГДА Истина Иначе Ложь КОНЕЦ
   |   КОНЕЦ КАК Весовой,
   |   
   |   //ИспользованиеСерий ВЫБОР КОГДА 1 В (ВЫБРАТЬ ПЕРВЫЕ 1 1 ИЗ Справочник.ВидыНоменклатуры.ПолитикиУчетаСерий КАК Т ГДЕ Т.Склад = &ПравилоОбменаСклад И Т.ПолитикаУчетаСерий.УказыватьПриОтгрузкеВРозницу И Т.Ссылка = КодыТоваровПодключаемогоОборудованияOffline.Номенклатура.ВидНоменклатуры) ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК УказыватьСерииПриОтгрузкеВРозницу,
   |   
   |   ВЫБОР
   |      КОГДА КодыТоваровПодключаемогоОборудованияOfflineИзменения.Узел = &УзелИнформационнойБазы
   |         ТОГДА 1
   |      ИНАЧЕ 0
   |   КОНЕЦ КАК ИндексКартинкиЕстьИзменения
   |ИЗ
   |   РегистрСведений.КодыТоваровПодключаемогоОборудованияOffline КАК КодыТоваровПодключаемогоОборудованияOffline
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(&ТекущаяДата, Склад = &ПравилоОбменаСклад) КАК СвободныеОстатки
   |      ПО КодыТоваровПодключаемогоОборудованияOffline.Номенклатура = СвободныеОстатки.Номенклатура
   |         И КодыТоваровПодключаемогоОборудованияOffline.Характеристика = СвободныеОстатки.Характеристика
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры
   |      ПО КодыТоваровПодключаемогоОборудованияOffline.Номенклатура = ШтрихкодыНоменклатуры.Номенклатура
   |         И КодыТоваровПодключаемогоОборудованияOffline.Характеристика = ШтрихкодыНоменклатуры.Характеристика
   |         И КодыТоваровПодключаемогоОборудованияOffline.Упаковка = ШтрихкодыНоменклатуры.Упаковка
   |         //ВесыСПечатьюЭтикеток И ШтрихкодыНоменклатуры.Штрихкод ПОДОБНО &ФорматШтрихкода
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ТекущаяДата, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
   |      ПО КодыТоваровПодключаемогоОборудованияOffline.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
   |         И КодыТоваровПодключаемогоОборудованияOffline.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика
   |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КодыТоваровПодключаемогоОборудованияOffline.Изменения КАК КодыТоваровПодключаемогоОборудованияOfflineИзменения
   |      ПО КодыТоваровПодключаемогоОборудованияOffline.Код = КодыТоваровПодключаемогоОборудованияOfflineИзменения.Код
   |      И КодыТоваровПодключаемогоОборудованияOfflineИзменения.ПравилоОбмена = &ПравилоОбмена
   |      И КодыТоваровПодключаемогоОборудованияOfflineИзменения.Узел = &УзелИнформационнойБазы
   |ГДЕ
   |   КодыТоваровПодключаемогоОборудованияOffline.ПравилоОбмена = &ПравилоОбмена
   |   И КодыТоваровПодключаемогоОборудованияOffline.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
   
   |//ТолькоИзмененные И КодыТоваровПодключаемогоОборудованияOfflineИзменения.ПравилоОбмена = &ПравилоОбмена
   |//ТолькоИзмененные И КодыТоваровПодключаемогоОборудованияOfflineИзменения.Узел = &УзелИнформационнойБазы
   
   |ИТОГИ
   |   МАКСИМУМ(Штрихкод)
   |ПО
   |   Код");
   
   Если Параметры.ЧастичнаяВыгрузка Тогда
      Запрос.Текст = СтрЗаменить(Запрос.Текст,"//ТолькоИзмененные","");
   КонецЕсли;
   
   Если ИспользоватьСерииНоменклатуры Тогда
      Запрос.Текст = СтрЗаменить(Запрос.Текст,"//ИспользованиеСерий","");
   КонецЕсли;
   
   Если Параметры.ТипОборудования = Перечисления.ТипыПодключаемогоОборудования.ВесыСПечатьюЭтикеток Тогда
      Запрос.Текст = СтрЗаменить(Запрос.Текст,"//ВесыСПечатьюЭтикеток","");
   КонецЕсли;
   
   Если Параметры.ТипОборудования = Перечисления.ТипыПодключаемогоОборудования.ВесыСПечатьюЭтикеток Тогда
      Запрос.УстановитьПараметр("ФорматШтрихкода", РегистрыСведений.ШтрихкодыНоменклатуры.ФорматВесовогоШтрихкода("_"));
   КонецЕсли;
   
   Запрос.УстановитьПараметр("ПравилоОбмена",          Параметры.ПравилоОбмена);
   Запрос.УстановитьПараметр("ПравилоОбменаСклад",     Параметры.Склад);
   Запрос.УстановитьПараметр("ВидЦены",                Параметры.ВидЦены);
   Запрос.УстановитьПараметр("УзелИнформационнойБазы", Параметры.УзелИнформационнойБазы);
   Запрос.УстановитьПараметр("ТекущаяДата",            КонецДня(ТекущаяДата()));
   
   ТаблицаТоваров = Новый ТаблицаЗначений;
   ТаблицаТоваров.Колонки.Добавить("Используется",       Новый ОписаниеТипов("Булево"));
   ТаблицаТоваров.Колонки.Добавить("Код",                Новый ОписаниеТипов("Число"));
   ТаблицаТоваров.Колонки.Добавить("Номенклатура",       Новый ОписаниеТипов("СправочникСсылка.Номенклатура"));
   ТаблицаТоваров.Колонки.Добавить("Характеристика",     Новый ОписаниеТипов("СправочникСсылка.ХарактеристикиНоменклатуры"));
   ТаблицаТоваров.Колонки.Добавить("Упаковка",           Новый ОписаниеТипов("СправочникСсылка.УпаковкиНоменклатуры"));
   ТаблицаТоваров.Колонки.Добавить("ЕдиницаИзмерения",   Новый ОписаниеТипов("Строка"));
   ТаблицаТоваров.Колонки.Добавить("Наименование",       Новый ОписаниеТипов("Строка"));
   ТаблицаТоваров.Колонки.Добавить("НаименованиеПолное", Новый ОписаниеТипов("Строка"));
   ТаблицаТоваров.Колонки.Добавить("Штрихкод",           Новый ОписаниеТипов("Строка"));
   ТаблицаТоваров.Колонки.Добавить("МассивШтрихкодов",   Новый ОписаниеТипов("Массив"));
   ТаблицаТоваров.Колонки.Добавить("Цена",               Новый ОписаниеТипов("Число"));
   ТаблицаТоваров.Колонки.Добавить("Остаток",            Новый ОписаниеТипов("Число"));
   ТаблицаТоваров.Колонки.Добавить("Весовой",            Новый ОписаниеТипов("Булево"));
   
   ТаблицаТоваров.Колонки.Добавить("ТребуетсяУказаниеСерий", Новый ОписаниеТипов("Булево"));
   
   ТаблицаТоваров.Колонки.Добавить("ЕстьОшибки",                  Новый ОписаниеТипов("Булево"));
   ТаблицаТоваров.Колонки.Добавить("ИндексКартинкиЕстьИзменения", Новый ОписаниеТипов("Число"));
   
   ВыборкаПоКодам = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
   Пока ВыборкаПоКодам.Следующий() Цикл
      
      НоваяСтрока = ТаблицаТоваров.Добавить();
      
      Выборка = ВыборкаПоКодам.Выбрать();
      Пока Выборка.Следующий() Цикл
         
         Штрихкод = СокрЛП(Выборка.Штрихкод);
         
         Если Не ЗначениеЗаполнено(НоваяСтрока.Код) Тогда
            
            НоваяСтрока.Используется                = Выборка.Используется;
            НоваяСтрока.Код                         = Выборка.Код;
            НоваяСтрока.Номенклатура                = Выборка.Номенклатура;
            НоваяСтрока.Характеристика              = Выборка.Характеристика;
            НоваяСтрока.Упаковка                    = Выборка.Упаковка;
            НоваяСтрока.Наименование                = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(Выборка.НоменклатураНаименование, Выборка.ХарактеристикаНаименование) + ?(ЗначениеЗаполнено(Выборка.УпаковкаНаименование),", " + Выборка.УпаковкаНаименование + ")","");
            НоваяСтрока.НаименованиеПолное          = НоменклатураКлиентСервер.ПредставлениеНоменклатурыДляПечати(Выборка.НоменклатураНаименованиеПолное, Выборка.ХарактеристикаНаименованиеПолное) + ?(ЗначениеЗаполнено(Выборка.УпаковкаНаименование),", " + Выборка.УпаковкаНаименование + ")","");
            НоваяСтрока.Цена                        = Выборка.Цена;
            НоваяСтрока.Остаток                     = Выборка.Остаток;
            НоваяСтрока.Весовой                     = Выборка.Весовой;
            НоваяСтрока.ИндексКартинкиЕстьИзменения = Выборка.ИндексКартинкиЕстьИзменения;
            НоваяСтрока.Штрихкод                    = Штрихкод;
            
            Если ИспользоватьСерииНоменклатуры Тогда
               НоваяСтрока.ТребуетсяУказаниеСерий  = Выборка.УказыватьСерииПриОтгрузкеВРозницу;
            КонецЕсли;
            
         Иначе
            НоваяСтрока.Штрихкод = НоваяСтрока.Штрихкод + ", " + Штрихкод;
         КонецЕсли;
         
         Если ЗначениеЗаполнено(Штрихкод) Тогда
            НоваяСтрока.МассивШтрихкодов.Добавить(Штрихкод);
         КонецЕсли;
         
      КонецЦикла;
      
      Если НоваяСтрока.Весовой
         И ОбновитьКодыТоваров
         И (Не ЗначениеЗаполнено(НоваяСтрока.Штрихкод)) Тогда
         
            Если МаксимальноеЗначениеКодаВесовыхШтрихкодов = Неопределено ИЛИ МаксимальноеЗначениеКодаВесовыхШтрихкодов >= МаксимальныйКодВесовогоТовара Тогда
               ВызватьИсключение РегистрыСведений.ШтрихкодыНоменклатуры.ТекстСообщенияНетСвободныхКодовВесовыхШтрихкодов();
            КонецЕсли;
               
            МаксимальноеЗначениеКодаВесовыхШтрихкодов = МаксимальноеЗначениеКодаВесовыхШтрихкодов + 1;
         
            Штрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.ПолучитьШтрихкодВесовогоТовараПоКоду(МаксимальноеЗначениеКодаВесовыхШтрихкодов, ПрефиксУзлаШтрихкода);
         
            НоваяСтрока.Штрихкод = Штрихкод;
            НоваяСтрока.МассивШтрихкодов.Добавить(НоваяСтрока.Штрихкод);
            
            Попытка
               МенеджерЗаписиШтрихкода = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();
               МенеджерЗаписиШтрихкода.Номенклатура   = НоваяСтрока.Номенклатура;
               МенеджерЗаписиШтрихкода.Характеристика = НоваяСтрока.Характеристика;
               МенеджерЗаписиШтрихкода.Упаковка       = НоваяСтрока.Упаковка;
               МенеджерЗаписиШтрихкода.Штрихкод       = НоваяСтрока.Штрихкод;
               МенеджерЗаписиШтрихкода.Записать();
            Исключение
               НоваяСтрока.Штрихкод = "";
               НоваяСтрока.МассивШтрихкодов.Очистить();
            КонецПопытки;
            
      КонецЕсли;
      
      Если НоваяСтрока.Весовой Тогда
         
         Если НоваяСтрока.МассивШтрихкодов.Количество() = 0 Тогда
            НоваяСтрока.ЕстьОшибки = Истина;
         КонецЕсли;
         
      КонецЕсли;
      
      Если Не ЗначениеЗаполнено(НоваяСтрока.Цена)
         ИЛИ НоваяСтрока.ТребуетсяУказаниеСерий
         ИЛИ Не ЗначениеЗаполнено(НоваяСтрока.Наименование)
         ИЛИ (Не ЗначениеЗаполнено(НоваяСтрока.Штрихкод) И Параметры.ТипОборудования = Перечисления.ТипыПодключаемогоОборудования.ВесыСПечатьюЭтикеток)
         ИЛИ (ЗначениеЗаполнено(Параметры.МаксимальныйКод) И НоваяСтрока.Код > Параметры.МаксимальныйКод) Тогда
         НоваяСтрока.ЕстьОшибки = Истина;
      КонецЕсли;
      
   КонецЦикла;
   
   УстановитьПривилегированныйРежим(Ложь);
   
   Возврат ТаблицаТоваров;
   
КонецФункции
DevЗагрузка dt в SQL базу.#46 17.05.17 22:14
Коллеги, приветствую.

Ошибка при загрузку dt из файловой базы в sql

Ошибка указывает на неуникальность индексов в таблице регистра накопления РасчетыПоЭквайрингу.Остатки. Полностью очистил все записи регистра (регистраторы пометил на удаление), то есть регистр пуст, но ошибка при загрузке dt так и осталась... Возможно я чего-то не понимаю - как в пустом регистре могут остаться записи с неуникальными ключами??
Прошу помощи...
ОбменВыгрузка Приходных накладных из УТ 11.1 в Штрих-М:Кассир-5#1 19.04.17 13:09
Здравствуйте.
Подскажите пожалуйста каким образом и в каком формате можно выгрузить Приходные накладные из УТ 11.1 в Штрих-М: Кассир 5? Продавец желает видеть приход в кассовой программе, и там вроде есть работа с документами, но в каком формате их выгружать так нигде и не нашел...
DBКакую СУБД Вы используете? Какой размер основной СУБД в Гб? Сколько пользователей системы?#131 14.03.17 15:10
Две организации.
Организация 1:
- 2 БД, обе файловые.
- количество сотрудников - 35 с прогнозом на будущее увеличение, так как планируется автоматизация удаленных объектов
- одновременно в обеих базах висит порядка 25-30 человек. Сервер старый, подлежит замене в ближайшее время
- размер БД - 800Мб и 6Гб (оперативный учет)

Организация 2:
- 9 БД (разные юридические лица, разный учет), MSSQL.
- количество сотрудников - порядка 450
- одновременное количество пользователей -порядка 350
- размер БД - варьируется от 1Гб до 250Гб (основная учетная база)
DevПорядок программного сохранения файла в томе УТ11.2#1 24.02.17 14:10
Коллеги, приветствую.
Подскажите пожалуйста порядок сохранения файла изображения для номенклатуры во внешнем томе на диске?
Скачиваю файл изображения из интернета. Если получаю сразу двоичные данные - в томе создается файл, но изображения в нем нет. Когда создаю присоединенный файл - после записи у него отсутствует ссылка, не могу ее присвоить Номенклатура.ФайлКартинки.
Надо ли перед созданием ПрисоединенногоФайла скачивать картинку непосредственно и помещать ее во временное хранилище? Почему не получается создать корректный файл на диске из двоичных данных?
DevЗагрузка изображений с сайта в УТ 11 по данным из файла выгрузки (с сайта).#1 20.02.17 14:54
Уважаемые коллеги, приветствую.
Возникла задача по загрузке изображений с сайта в УТ 11.2. Информацию для загрузки получаю в виде csv следующего формата:

В строке есть наименование, УИД для поиска в базе и, собственно, адрес изображения на сервере.
Разбираю файл и следующей процедурой записываю изображения в БД:
Код
&НаСервереБезКонтекста
Процедура ПрисоединитьКартинкиКТоварам(ТЗФайл);
   
   Соединение = Новый HTTPСоединение("здесь адрес хоста");
   Обработано = 0;
   НеОбработано404 = 0;
   Сообщить("Время начала загрузки: " + Формат(ТекущаяДата(),"ДЛФ=T"));
   
   Для каждого стрТЗФайл Из ТЗФайл Цикл
      Попытка
         Соединение.Получить(СтрЗаменить(стрТЗФайл.АдресКартинки, "и здесь адрес хоста","/"), "C:\temp\image.gif");
      Исключение
         Сообщить("Не удалось загрузить картинку: " + стрТЗФайл.АдресКартинки);
         НеОбработано404 = НеОбработано404 + 1;
      КонецПопытки;
      
      МояКартинка = Новый Картинка("C:\temp\image.gif");
      
      ХранилищеКартинки = Новый ХранилищеЗначения(МояКартинка); 
      ДвоичныеДанныеКартинки = МояКартинка.ПолучитьДвоичныеДанные();
      товарОбъект = стрТЗФайл.СсылкаНаОбъект.ПолучитьОбъект();
      товарОбъект.Описание = стрТЗФайл.Описание;
                                         
      СсылкаНового = Справочники.НоменклатураПрисоединенныеФайлы.ПолучитьСсылку();
      ПрисоединенныйФайл = Справочники.НоменклатураПрисоединенныеФайлы.СоздатьЭлемент();    
      ПрисоединенныйФайл.УстановитьСсылкуНового(СсылкаНового);             
      ПрисоединенныйФайл.ВладелецФайла   = стрТЗФайл.СсылкаНаОбъект;           
      ПрисоединенныйФайл.ДатаМодификацииУниверсальная = ТекущаяДата();
      ПрисоединенныйФайл.ДатаСоздания      = ТекущаяДата();
      ПрисоединенныйФайл.Описание         = "";
      //ПрисоединенныйФайл.ПодписанЭЦП      = Ложь;    
      ПрисоединенныйФайл.Наименование      = "image";
      
      Если СтрЧислоВхождений(стрТЗФайл.АдресКартинки,"jpg") = 1 Тогда
         Расширение = "jpg";
      ИначеЕсли СтрЧислоВхождений(стрТЗФайл.АдресКартинки,"png") = 1 Тогда
         Расширение = "png";
      ИначеЕсли СтрЧислоВхождений(стрТЗФайл.АдресКартинки,"gif") = 1 Тогда
         Расширение = "gif";
      ИначеЕсли СтрЧислоВхождений(стрТЗФайл.АдресКартинки,"jpeg") = 1 Тогда
         Расширение = "jpeg";
      КонецЕсли; 
      
      ПрисоединенныйФайл.Расширение      = Расширение;
      ПрисоединенныйФайл.ТипХраненияФайла = ФайловыеФункцииСлужебный.ТипХраненияФайлов();         
      ПрисоединенныйФайл.Размер = ДвоичныеДанныеКартинки.Размер(); 
      ПрисоединенныйФайл.ФайлХранилище = ХранилищеКартинки;
      ПрисоединенныйФайл.ИндексКартинки = ФайловыеФункцииСлужебныйКлиентСервер.ПолучитьИндексПиктограммыФайла(Расширение); 
      
      ПрисоединенныеФайлыСлужебный.ЗаписатьФайлВИнформационнуюБазу(СсылкаНового, ДвоичныеДанныеКартинки);
         
      Попытка
         ПрисоединенныйФайл.Записать();
         ПрисоединенныеФайлыСлужебный.ЗаписатьФайлВИнформационнуюБазу(ПрисоединенныйФайл.Ссылка, ДвоичныеДанныеКартинки);    
         товарОбъект.ФайлКартинки = ПрисоединенныйФайл.Ссылка;
         товарОбъект.Записать(); 
      Исключение                
         КраткоеПредставлениеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке());
         ТекстСообщения = НСтр("ru = 'Ошибка при добавлении файла ""%1"": '") + КраткоеПредставлениеОшибки;
         ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ТекстСообщения, товарОбъект.Наименование + "." + Расширение);
         ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);                         
         Возврат;
      КонецПопытки;
      
      Обработано = Обработано + 1;
   КонецЦикла;
   
   Сообщить("Обработано " + Строка(Обработано) + " объектов.");
   Сообщить("Не обработано из-за ошибки на сайте " + Строка(НеОбработано404) + " объектов.");
   Сообщить("Время окончания загрузки: " + Формат(ТекущаяДата(),"ДЛФ=T"));
   
КонецПроцедуры

Из особенностей - временная папка C:\Temp используется для скачивания изображения на диск (своеобразная буферизация) и последующей записи в БД. Наименование файла изображения для всех товаров одно и то же "image" с расширением, определяемым в коде выше.

Собственно вопрос - после загрузки 15к изображений в БД (БД файловая) размер файла увеличивается примерно вдвое и начинаются жуткие тормоза. При переводе на SQL обстановка неменяется.
Пробовал изменить том хранения в настройках работы с файлами. Там вообще интересно. Количество файлов к переносу указывается 0, хотя количество загруженных изображений более 15000. Посмотрел обработку штатную - она почему-то работает только во справочником ВерсииФайлов, тогда как картинки лежат в ПрисоединенныхФайлах. Что делать непонятно.
Прошу помощи.
DevЗапрос к УТ11 на карты лояльности#13 13.02.17 8:07
(12)(10)
Решил так.
1. Запросом к РН ДействиеСкидокНаценок выбираю все действующие скидки по картам лояльности.

Код
Запрос = Новый Запрос;
   Запрос.Текст = 
      "ВЫБРАТЬ
      |   ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка,
      |   ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.ЗначениеСкидкиНаценки КАК СкидкаЗначение,
      |   КартыЛояльности.Ссылка КАК КартаЛояльности,
      |   ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка.УсловияПредоставления.(
      |      УсловиеПредоставления
      |   ) КАК УсловияПРедоставленияСкидок
      |ИЗ
      |   РегистрСведений.ДействиеСкидокНаценок.СрезПоследних(, ) КАК ДействиеСкидокНаценокСрезПоследних
      |      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КартыЛояльности КАК КартыЛояльности
      |      ПО ДействиеСкидокНаценокСрезПоследних.Источник = КартыЛояльности.Владелец
      |ГДЕ
      |   ДействиеСкидокНаценокСрезПоследних.Статус = &СтатусСкидки
      |   И ТИПЗНАЧЕНИЯ(ДействиеСкидокНаценокСрезПоследних.Источник) = ТИП(СПравочник.ВидыКартЛояльности)
      |   И КартыЛояльности.Статус = &СтатусКартыЛояльности
      |
      |УПОРЯДОЧИТЬ ПО
      |   КартыЛояльности.Наименование,
      |   СкидкаЗначение УБЫВ";
   
   Запрос.УстановитьПараметр("СтатусСкидки", Перечисления.СтатусыДействияСкидок.Действует);
   Запрос.УстановитьПараметр("СтатусКартыЛояльности", Перечисления.СтатусыКартЛояльности.Действует);
   
   РезультатЗапроса = Запрос.Выполнить().Выгрузить();

2. Запросом выбираю выручку для выбранных ранее карт (предварительно сортирую и чищу ТЗ с картами на предмет удаления повторяющихся позиций, так как за каждой картой может быть закреплено несколько скидок, а мне нужен просто список карт для выручки)

Код
Запрос = Новый Запрос;
   Запрос.Текст = 
      "ВЫБРАТЬ
      |   КартыЛояльности.Ссылка КАК КартаЛояльности,
      |   СУММА(ЕСТЬNULL(ВыручкаИСебестоимостьПродаж.СуммаВВалютеВзаиморасчетов, 0)) КАК СуммаНакоплений
      |ИЗ
      |   Справочник.КартыЛояльности КАК КартыЛояльности
      |      ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж
      |      ПО КартыЛояльности.Партнер = ВыручкаИСебестоимостьПродаж.АналитикаУчетаПоПартнерам.Партнер
      |ГДЕ
      |   КартыЛояльности.Ссылка В (&МассивКартДляВыручки)
      |
      |СГРУППИРОВАТЬ ПО
      |   КартыЛояльности.Ссылка
      |
      |УПОРЯДОЧИТЬ ПО
      |   КартаЛояльности";
   
   Запрос.УстановитьПараметр("МассивКартДляВыручки", МассивКартДляВыручки);
   
   тзКартыСВыручкой = Запрос.Выполнить().Выгрузить();

3. Имея ТЗ с картами и выручкой и ТЗ с картами и скидкой обрабатываю две эти таблицы и создаю итоговую для выгрузки нужного мне состава. Всем спасибо за комментарии.
DevЗапрос к УТ11 на карты лояльности#11 09.02.17 17:40
(10)Простите, видимо я чего-то не понимаю. Ознакомился. Там написано все то же, что прочитал уже неоднократно. Эта информация не приблизила меня к реализации задуманного - получение данных по картам лояльности и процентам скидок. Допустим, я создал в УТ несколько накопительных скидок с условием по общему объему продаж. Привязал к виду карт лояльности и создал в рамках вида несколько карт. По этим картам еще нет накоплений, так как продаж не было, соответственно скидка по ним должна быть минимальной, 5%. Вот эту информацию и хочу достать из БД запросом. Вот это у меня и не получается.
DevЗапрос к УТ11 на карты лояльности#9 09.02.17 17:04
(8)
Цитата
вам что нужно? сколько по диск карте надо дать клиенту скидку? или вычислить процент скидки, которую дали при продаже? одних ОРП будет не достаточно, документов продаж много в программе и забыть про возвраты нужно

Надо получить для выгрузки в кассовую программу данные: Карта лояльности, Процент скидки, сумма накопления. Подразумевается, что система скидок у клиента скорее всего будет простая, типа 5% на накопления 10000, 10% - на 50000. Но базы целевой нет, работаю с демо базой УТ11.2, и даже смоделировать простую карту с простоя накопительной скидкой не получается. Запросом достать из БД имеющиеся карты со скидками тоже не получается...
DevЗапрос к УТ11 на карты лояльности#7 09.02.17 16:40
(6)
Цитата
давно УТ открывал, но сумма начислений вроде хранятся в РН БонусныеБаллы, а процент надо будет считать по РН ВыручкаИСебестоимостьПродаж
Про сумму накоплений по РН ВыручкаИСебестоимостьПродаж понял, надо будет либо из него, либо считать по документам ОтчетОРозничныХПродажах, а вот про % - неужели нельзя вытянуть из скидки, привязанной к виду карты лояльности? Нелогично как-то...