воскресенье, 30 ноября 2014 г.

1С Предприятие УТ - как обновлять модуль обмена на модифицированной конфигурации

В последнее время обновления модуля обмена с сайтом для 1С Предприятия выходят очень часто. Если текущий модуль обмена, установленный в УТ - оригинальный, обновлять его не составляет труда. Что же делать, если модуль обмена модифицирован, обмен с сайтом в целом налажен и устраивает, но есть необходимость "выцепить" какую-то новую фичу из свежего модуля обмена?

К примеру, одна из версий модуля обмена генерировала ошибку при попытке добавить штрих-код номенклатуры:

Ошибка при выполнении обработчика - 'ПередЗаписью'
по причине:
{ОбщийМодуль.Б_ОбменССайтомСервер.Модуль(411)}: Ошибка при вызове метода контекста (ЗарегистрироватьИзменения)
ПланыОбмена.ЗарегистрироватьИзменения(МассивУзловТовары, Запись.Номенклатура);
по причине:
Несоответствие типов (параметр номер '1')


Техподдержка Битрикс сообщила нам, что данная проблема известна и решена в обновлении модуля обмена. Однако просто так взять и обновить модуль обена мы не можем, так как ранее вносили в него модификации.

Находим в конфигурации место, в котором происходит ошибка. Это процедура

Процедура ЗарегистрироватьИзменения(Объект, Замещение = Ложь)

Скачиваем новый модуль обмена от сюда>>  Нажимаем setup - в ходе установки там по сути извлекается конфигурационный файл cf модуля. Открываем файл cf в конфигураторе и ищем там процедуру ЗарегистрироватьИзменения в модуле Б_ОбменССайтомСервер

Заменяем процедуру в своей конфигурации. Можно обновить и другие процедуры модуля, предварительно сравнив конфигурацию с файлом в конфигураторе через "Сравнить, объединить конфигурацию с файлом".

суббота, 29 ноября 2014 г.

1С Предприятие УТ - как сделать чтобы при импорте с сайта правильно заполнялись адреса контрагентов



Сам импорт не трогаем - адрес контрагента приходит, как приходит. Возникает проблема при последующем пересохранении контрагента - адрес слетает. Чтобы этого не случалось - подписываемся на событие:


Процедура _НовыйМодульПодпискаНаСобытиеПередЗаписью(Источник, Отказ) Экспорт
 
 ТекущийОбъект = Источник;
 Для Каждого ТекЭлемент Из ТекущийОбъект.КонтактнаяИнформация Цикл
  Если ТекЭлемент.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес ИЛИ ТекЭлемент.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты ИЛИ ТекЭлемент.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
  Иначе
   Продолжить;
  КонецЕсли; 
  Если Лев(ТекЭлемент.ЗначенияПолей, 28) = "<КонтактнаяИнформация xmlns=" Тогда
   Продолжить;
  КонецЕсли;
  Если ТекЭлемент.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес Тогда
   ТекЭлемент.Представление = ТекЭлемент.Представление;
   ТекЭлемент.ЗначенияПолей = "<КонтактнаяИнформация xmlns=""http://www.v8.1c.ru/ssl/contactinfo"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Представление="""+ТекЭлемент.Представление+"""><Комментарий/><Состав xsi:type=""Адрес"" Страна=""РОССИЯ""><Состав xsi:type=""АдресРФ""><СубъектРФ>Московская обл</СубъектРФ><СвРайМО><Район xsi:nil=""true""/></СвРайМО><Город>"+ТекЭлемент.Город+"</Город><НаселПункт xsi:nil=""true""/><Улица>"+ТекЭлемент.Представление+"</Улица><ДопАдрЭл ТипАдрЭл=""10100000"" Значение=""""/></Состав></Состав></КонтактнаяИнформация>";
  ИначеЕсли ТекЭлемент.Тип = Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты Тогда
   ТекЭлемент.Представление = ТекЭлемент.Представление;
   ТекЭлемент.АдресЭП   = ТекЭлемент.Представление;                                                                                                                                                                               
   ТекЭлемент.ЗначенияПолей = "<КонтактнаяИнформация xmlns=""http://www.v8.1c.ru/ssl/contactinfo"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Представление="""+ТекЭлемент.Представление+"""><Состав xsi:type=""ЭлектроннаяПочта"" Значение="""+ТекЭлемент.Представление+"""/></КонтактнаяИнформация>";
  ИначеЕсли ТекЭлемент.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон Тогда
   ТекЭлемент.Представление   = ТекЭлемент.Представление;
   ТекЭлемент.НомерТелефона   = ТекЭлемент.Представление;
   ТекЭлемент.НомерТелефонаБезКодов = ТекЭлемент.Представление;
   ТекЭлемент.ЗначенияПолей = "<КонтактнаяИнформация xmlns=""http://www.v8.1c.ru/ssl/contactinfo"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" Представление="""+ТекЭлемент.Представление+"""><Комментарий/><Состав xsi:type=""НомерТелефона"" КодСтраны="""" КодГорода="""" Номер="""+ТекЭлемент.Представление+""" Добавочный=""""/></КонтактнаяИнформация>";
  КонецЕсли;
 КонецЦикла;

КонецПроцедуры

1С Предприятие УТ - Как сделать, чтобы при создании реализации на основании заказа менеджер подставлялся из заказа

...в не зависимости от того, какой пользователь вводит реализацию.

Открываем конфигуратор, раскрываем дерево конфигурации

Общие ->Общие модули ->

Добавляем новый модуль

Пишем в нем процедуру:

Процедура _НовыйМодульПередЗаписьюРеализации(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт
 
 Источник.Менеджер=Источник.ЗаказКлиента.Менеджер;

КонецПроцедуры


Идем в

 -> Общие -> Подписки на события.

Добавляем новую подписку

на ДокументОбъект.РеализацияТоваровУслуг Событие ПередЗаписью

в поле Обработчик выбираем процедуру, которую мы только что написали в нашем новом модуле.


Данная модификация не снимает конфигурацию с поддержки.

вторник, 25 ноября 2014 г.

Интернет-магазин - минимизируем накладные расходы

Бытует мнение, что работать в убыток первые полгода-год после запуска интернет-магазина - это нормально, последующие годы все окупят. Это самообман, ловушка, в которую попадают многие учредители интернет-магазинов. Вряд ли расходы окупятся через месяц, но уже в первые месяцы после запуска магазина грязная прибыль за вычетом налогов должна покрывать ежемесячные регулярные расходы на содержание и развитие интернет-магазина. Чистая прибыль в этот период должна быть как минимум достаточной, чтобы в течение запланированного срока окупаемости (например, год или два года), вернулись средства, вложенные в запуск интернет-магазина. 

Каким бы ни был оборот интернет-магазина и какой бы ни была наценка на товар, накладные расходы легко могут поглотить всю полученную прибыль.