Загрузка данных
&НаКлиенте
Процедура ФайлНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
СтандартнаяОбработка=ложь;
ПутьКФайлу = "";
выборФ = новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
выборф.Фильтр = НСтр("ru = 'dbf'; en = 'dbf'") + "(*.dbf)|*.dbf";
выборф.МножественныйВыбор = ложь;
выборф.Заголовок = "Выберите файл";
выборф.Каталог ="C:\SERVICE1\Obmen\Выгрузки";
если выборф.Выбрать() тогда
Файл = выборф.ПолноеИмяФайла;
Возврат;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Файл = "";
Сгруппировать = ложь;
проставитьСгрупп();
КонецПроцедуры
&НаСервере
Процедура ЗагрузкаНаСервере(АдресХран)
локф = КаталогВременныхФайлов()+"\obmen.dbf";
дд = ПолучитьИзВременногоХранилища(АдресХран);
дд.Записать(локф);
dBase = новый XBase(локф);
Таблица=Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("ДатаДокумента");
Таблица.Колонки.Добавить("ТипДокумента");
Таблица.Колонки.Добавить("ФинНомер");
Таблица.Колонки.Добавить("Номенклатура");
Таблица.Колонки.Добавить("Количество");
Таблица.Колонки.Добавить("Сумма");
Таблица.Колонки.Добавить("КатНомер");
Таблица.Колонки.Добавить("ГТД");
Таблица.Колонки.Добавить("Страна");
Таблица.Колонки.Добавить("Контрагент");
Таблица.Колонки.Добавить("КонтрагентПолное");
Таблица.Колонки.Добавить("КонтрагентАдрес");
Таблица.Колонки.Добавить("КонтрагентИНН");
Таблица.Колонки.Добавить("КонтрагентКПП");
Таблица.Колонки.Добавить("Организация");
Таблица.Колонки.Добавить("ОрганизацияИНН");
Таблица.Колонки.Добавить("Склад");
Таблица.Колонки.Добавить("СтавкаНДС");
Таблица.Колонки.Добавить("СуммаНДС");
//заполнение таблицы
dBase.Первая();
Пока Не dBase.ВКонце() Цикл
Если СокрЛП(Организация.ИНН) <> СокрЛП(dBase.FirmINN) Тогда
dBase.Следующая();
Продолжить;
КонецЕсли;
СтрТаб = Таблица.Добавить();
СтрТаб.ДатаДокумента = dBase.Data;
СтрТаб.ТипДокумента = СокрЛП(dBase.DokTip);
СтрТаб.ФинНомер = СокрЛП(dBase.FinNom);
СтрТаб.Номенклатура = СокрЛП(dBase.Nomen);
СтрТаб.Количество = dBase.Kol;
СтрТаб.Сумма = dBase.Summa;
попытка
СтрТаб.СтавкаНДС = СокрЛП(dBase.StavNDS);
СтрТаб.СуммаНДС = dBase.SumNDS;
Исключение КонецПопытки;
СтрТаб.КатНомер = СокрЛП(dBase.KatNomer);
СтрТаб.ГТД = СокрЛП(dBase.GTD);
СтрТаб.Страна = СокрЛП(dBase.Strana);
СтрТаб.Контрагент = СокрЛП(dBase.Kontr);
СтрТаб.КонтрагентАдрес = СокрЛП(dBase.Adres);
СтрТаб.КонтрагентИНН = СокрЛП(dBase.KontrINN);
СтрТаб.КонтрагентКПП = СокрЛП(dBase.KontrKPP);
СтрТаб.КонтрагентПолное = СокрЛП(dBase.UrNaim);
СтрТаб.Организация = СокрЛП(dBase.Firm);
СтрТаб.ОрганизацияИНН = СокрЛП(dBase.FirmINN);
СтрТаб.Склад = СокрЛП(dBase.Sklad);
dBase.Следующая();
КонецЦикла;
Таблица.Сортировать("ФинНомер");
ФинНомер = "";
Поступление = Неопределено;
Для каждого Стр из Таблица цикл
Если Стр.ФинНомер = "FINNOM" Тогда
Продолжить;
КонецЕсли;
Если ФинНомер <> Стр.ФинНомер Тогда
Если Поступление <> Неопределено Тогда
Поступление.Записать();
КонецЕсли;
Контрагент = ПроверитьКонтрагента(Организация,Стр.Контрагент,Стр.КонтрагентИНН,Стр.КонтрагентКПП,Стр.КонтрагентАдрес,Стр.КонтрагентПолное, Истина);
ЕстьПоступление = ПроверкаНаличияПоступленияВБазе(Документы.ПоступлениеТоваровУслуг.ПустаяСсылка(), Стр.ФинНомер, Стр.ДатаДокумента, Контрагент);
Если ЕстьПоступление = "Документа нет" Тогда
Поступление = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
Поступление.НомерВходящегоДокумента = Стр.ФинНомер;
Поступление.ДатаВходящегоДокумента = Стр.ДатаДокумента;
Поступление.Дата = Стр.ДатаДокумента;
Поступление.УстановитьНовыйНомер(Организация.Префикс);
Сообщить("Создаем документ Поступления " + Поступление.Номер);
Поступление.ВидОперации = Перечисления.ВидыОперацийПоступлениеТоваровУслуг.Товары;
Поступление.Контрагент = Контрагент;
Поступление.ДоговорКонтрагента = ПолучитьОсновнойДоговор(Поступление.Контрагент,Организация,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком);
Поступление.Организация = Организация;
Поступление.Склад = СопоставитьСклад(Стр.Склад);
Если ЗначениеЗаполнено(Поступление.Склад) И ЗначениеЗаполнено(Поступление.Склад.ПодразделениеОрганизации)Тогда
Поступление.ПодразделениеОрганизации = Поступление.Склад.ПодразделениеОрганизации;
КонецЕсли;
Поступление.СпособЗачетаАвансов = Перечисления.СпособыЗачетаАвансов.Автоматически;
Поступление.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета.Получить();
Поступление.Ответственный = ПараметрыСеанса.ТекущийПользователь;
Поступление.НДСВключенВСтоимость = Истина;
Поступление.НДСНеВыделять = Истина;
Поступление.СуммаВключаетНДС = Истина;
Поступление.СчетУчетаРасчетовСКонтрагентом = ПланыСчетов.Хозрасчетный.РасчетыСПоставщиками;
Поступление.СчетУчетаРасчетовПоАвансам = ПланыСчетов.Хозрасчетный.РасчетыПоАвансамВыданным;
Иначе
ФинНомер = Стр.ФинНомер;
Продолжить;
КонецЕсли;
КонецЕсли;
Если Поступление <> Неопределено Тогда
//если Сгруппировать тогда
// для каждого стр из ТЗНом цикл
// стр.Номенклатура = "Автозапчасти";
// стр.КатНомер = "000000";
// стр.ГТД="";
// стр.Страна="";
// КонецЦикла;
// ТЗНом.Свернуть("ДатаДокумента,ТипДокумента,ФинНомер,Контрагент,ЮрНаименование,"+
// "Адрес,ИНН,КПП,НомерСчета,ДатаСчета,ДатаСчетаФактуры,НомерСчетаФактуры,Склад,КатНомер,Номенклатура,ГТД,Страна",
// "Количество,Сумма,СуммаНДС");
//КонецЕсли;
//
//если СокрЛП(стр.ГТД)="" или СокрЛП(стр.ГТД)="<>" тогда
// НайденнаяГТД = Справочники.НомераГТД.ПустаяСсылка();
//иначе
// НайденнаяГТД = Справочники.НомераГТД.НайтиПоКоду(стр.ГТД);
// Если стр.ГТД<>"" и (НайденнаяГТД = Справочники.НомераГТД.ПустаяСсылка() ИЛИ НайденнаяГТД = Неопределено) Тогда
// НоваяГТД = Справочники.НомераГТД.СоздатьЭлемент();
// //Сообщить("Создали новый ГТД "+стр.ГТД);
// НоваяГТД.Код = стр.ГТД;
// НоваяГТД.Записать();
// КонецЕсли;
//КонецЕсли;
Номенклатура = ПроверитьНоменклатуру(стр.Номенклатура, стр.КатНомер, стр.ГТД, стр.Страна,"приход");
ТЧПоступление = Поступление.Товары.Добавить();
ТЧПоступление.Номенклатура = Номенклатура;
ТЧПоступление.Количество = стр.Количество;
ТЧПоступление.Сумма = стр.Сумма;
ТЧПоступление.Цена = стр.Сумма / ?(стр.Количество =0 , 1, стр.Количество);
// + 07.07.2025 Задача №61436
ТЧПоступление.СтавкаНДС = СопоставитьСтавкуНДС(стр.СтавкаНДС);
ТЧПоступление.СуммаНДС = стр.СуммаНДС;
Если ТЧПоступление.СуммаНДС <> 0 Тогда
Поступление.НДСВключенВСтоимость = Истина;
Поступление.СуммаВключаетНДС = Истина;
Поступление.НДСНеВыделять = Ложь;
КонецЕсли;
ТЧПоступление.ОтражениеВУСН = ПоступлениеТоваровУслугФормыКлиентСервер.ОтражениеВУСН(Поступление.ВидОперации, Ложь);
//ТЧПоступление.ОтражениеВУСН = Перечисления.ОтражениеВУСН.НеПринимаются;
//ТЧПоступление.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
// - 07.07.2025 Задача №61436
ТЧПоступление.СчетУчета = ПланыСчетов.Хозрасчетный.НайтиПоКоду("41.01");
КонецЕсли;
ФинНомер = Стр.ФинНомер;
КонецЦикла;
Если Поступление <> Неопределено Тогда
Поступление.Записать();
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверитьКонтрагента(Организация, Контрагент, ИНН, КПП, Адрес, ЮрНаим, Поступление)
НайденныйКонтрагент = Справочники.Контрагенты.ПустаяСсылка();
Если СокрЛП(ИНН) <> "" Тогда
НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоРеквизиту("ИНН", СокрЛП(ИНН));
КонецЕсли;
Если НайденныйКонтрагент = Справочники.Контрагенты.ПустаяСсылка() или НайденныйКонтрагент.ПометкаУдаления Тогда
НайденныйКонтрагент = Справочники.Контрагенты.НайтиПоНаименованию(СокрЛП(Контрагент),Истина);
КонецЕсли;
Если НайденныйКонтрагент = Справочники.Контрагенты.ПустаяСсылка() или НайденныйКонтрагент.ПометкаУдаления Тогда
запрос = новый Запрос;
запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| Контрагенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| (Контрагенты.НаименованиеПолное ПОДОБНО ""%"" + &НаименованиеПолное + ""%""
| ИЛИ Контрагенты.Наименование = &Наименование
| ИЛИ Контрагенты.Наименование = &НаименованиеПолное
| ИЛИ Контрагенты.НаименованиеПолное ПОДОБНО ""%"" + &Наименование + ""%"")
| И НЕ Контрагенты.ЭтоГруппа
| И НЕ Контрагенты.ПометкаУдаления
|
|УПОРЯДОЧИТЬ ПО
| Ссылка УБЫВ";
запрос.УстановитьПараметр("Наименование",ПреобразоватьИмя(СокрЛП(Контрагент)));
запрос.УстановитьПараметр("НаименованиеПолное",ЮрНаим);
рез = запрос.Выполнить().Выбрать();
если рез.Следующий() тогда
НайденныйКонтрагент = рез.ссылка;
КонецЕсли;
КонецЕсли;
если ЗначениеЗаполнено(НайденныйКонтрагент) тогда
//проверим договор на основной
запрос = новый запрос;
запрос.Текст=
"ВЫБРАТЬ РАЗРЕШЕННЫЕ
| ДоговорыКонтрагентов.Владелец,
| ДоговорыКонтрагентов.Ссылка,
| ДоговорыКонтрагентов.Наименование
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.ПометкаУдаления = ЛОЖЬ
| И ДоговорыКонтрагентов.Владелец = &Владелец
| И ДоговорыКонтрагентов.ЭтоГруппа = ЛОЖЬ
| И ДоговорыКонтрагентов.Организация = &Организация
| И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора";
запрос.УстановитьПараметр("ВидДоговора",?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем));
запрос.УстановитьПараметр("Организация",Организация);
запрос.УстановитьПараметр("Владелец",НайденныйКонтрагент.Ссылка);
рез=запрос.Выполнить().Выгрузить();
//если рез.Количество()=1 или (не ЗначениеЗаполнено(ПолучитьОсновнойДоговор(НайденныйКонтрагент.Ссылка,Организация,?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем))) и рез.Количество()>0) тогда
если рез.Количество()=0 или не ЗначениеЗаполнено(ПолучитьОсновнойДоговор(НайденныйКонтрагент.Ссылка,Организация,?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем))) тогда
новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
новДог.Организация = Организация;
новДог.Владелец = НайденныйКонтрагент.Ссылка;
новДог.Наименование = ?(Поступление,"Счет","Основной");
новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
новДог.Записать();
Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НайденныйКонтрагент.Ссылка);
рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
рс.ВидДоговора = новДог.ВидДоговора;
рс.Договор = новДог.Ссылка;
рс.Контрагент = НайденныйКонтрагент.Ссылка;
рс.Организация = Организация;
рс.Записать(Истина);
//ИначеЕсли рез.Количество()>0 тогда
//
//
// рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
// рс.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
// рс.Договор = рез[0].Ссылка;
// рс.Контрагент = НайденныйКонтрагент.Ссылка;
// рс.Организация = Организация;
// рс.Записать(Истина);
//
//
//
// если Поступление тогда
// НаимДог = "Счет";
// КонецЕсли;
//
// если Поступление тогда
//
// новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
// новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
// новДог.Организация = Организация;
// новДог.Владелец = НайденныйКонтрагент.Ссылка;
// новДог.Наименование = НаимДог;
// новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
// новДог.Записать();
// Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НайденныйКонтрагент.Ссылка);
//
// иначе
//
// найд = рез.найти("Договор оферты","Наименование");
// если найд<>Неопределено тогда
// новДог = найд.ссылка;
// иначе
// новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
// новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
// новДог.Организация = Организация;
// новДог.Владелец = НайденныйКонтрагент.Ссылка;
// новДог.Наименование = НаимДог;
// новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
// новДог.Записать();
// Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НайденныйКонтрагент.Ссылка);
// КонецЕсли;
//
// КонецЕсли;
//
// если ПолучитьОсновнойДоговор(НайденныйКонтрагент.Ссылка,Организация,?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем)) <>новДог.Ссылка тогда
// рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
// рс.ВидДоговора = новДог.ВидДоговора;
// рс.Договор = новДог.Ссылка;
// рс.Контрагент = НайденныйКонтрагент.Ссылка;
// рс.Организация = Организация;
// рс.Записать(Истина);
// КонецЕсли;
//
//ИначеЕсли рез.Количество()=0 тогда
//
// если Поступление тогда
// НаимДог = "Счет";
// КонецЕсли;
//
// новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
// новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
// новДог.Организация = Организация;
// новДог.Владелец = НайденныйКонтрагент.Ссылка;
// новДог.Наименование = НаимДог;
// новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
// новДог.Записать();
// Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НайденныйКонтрагент.Ссылка);
// рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
// рс.ВидДоговора = новДог.ВидДоговора;
// рс.Договор = новДог.Ссылка;
// рс.Контрагент = НайденныйКонтрагент.Ссылка;
// рс.Организация = Организация;
// рс.Записать(Истина);
КонецЕсли;
конецесли;
если не ЗначениеЗаполнено(НайденныйКонтрагент) тогда
КраткоеИмя = ПреобразоватьИмя(СокрЛП(Контрагент));
НовыйКонтрагент = Справочники.Контрагенты.СоздатьЭлемент();
НовыйКонтрагент.Наименование = КраткоеИмя;
НовыйКонтрагент.УстановитьНовыйКод();
НовыйКонтрагент.НаименованиеПолное = ЮрНаим;
НовыйКонтрагент.ИНН = ИНН;
если СтрДлина(НовыйКонтрагент.ИНН)<>12 тогда
НовыйКонтрагент.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ЮридическоеЛицо;
иначе
НовыйКонтрагент.ЮридическоеФизическоеЛицо = Перечисления.ЮридическоеФизическоеЛицо.ФизическоеЛицо;
КонецЕсли;
НовыйКонтрагент.КПП = КПП;
НовыйКонтрагент.Записать();
Сообщить("Создали нового контрагента "+НовыйКонтрагент.Наименование+" ИНН "+ИНН);
если Поступление тогда
НаимДог = "Счет";
КонецЕсли;
новДог = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
новДог.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
новДог.Организация = Организация;
новДог.Владелец = НовыйКонтрагент.Ссылка;
новДог.Наименование = НаимДог;
новДог.ВидДоговора = ?(Поступление,Перечисления.ВидыДоговоровКонтрагентов.СПоставщиком,Перечисления.ВидыДоговоровКонтрагентов.СПокупателем);
новДог.Записать();
Сообщить("Создали новый договор "+новДог.Наименование+" для контрагента "+НовыйКонтрагент.Ссылка);
рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
рс.ВидДоговора = новДог.ВидДоговора;
рс.Договор = новДог.Ссылка;
рс.Контрагент = новДог.Владелец;
рс.Организация = Организация;
рс.Записать(Истина);
Возврат НовыйКонтрагент.Ссылка;
Иначе
Возврат НайденныйКонтрагент;
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ПреобразоватьИмя(Имя)
Новимя = имя;
если Врег(лев(Новимя,3)) = "ИП " тогда
новИмя = СокрЛП(Прав(Новимя,СтрДлина(Новимя)-3));
КонецЕсли;
если Найти(Новимя,"""")>0 тогда
перваякавычка = Найти(Новимя,"""");
Новимя = Прав(Новимя,СтрДлина(Новимя)-перваякавычка);
втораякавычка = Найти(Новимя,"""");
если втораякавычка>0 тогда
Новимя = Лев(Новимя,втораякавычка-1);
КонецЕсли;
КонецЕсли;
Новимя = СокрЛП(Новимя);
Возврат Новимя;
КонецФункции
&НаСервереБезКонтекста
функция ПолучитьОсновнойДоговор(Контрагент,Организация,Вид) экспорт
рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
рс.ВидДоговора = Вид;
рс.Контрагент = Контрагент;
рс.Организация = Организация;
рс.Прочитать();
если рс.Выбран() тогда
Возврат рс.Договор;
иначе
Возврат Справочники.ДоговорыКонтрагентов.ПустаяСсылка();
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
функция ПроверитьДоговорСчет(Орг,Контр,Вид,НомерСчета,ДатаСчета)
запрос = новый запрос;
запрос.Текст =
"ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| ДоговорыКонтрагентов.Ссылка,
| ДоговорыКонтрагентов.Дата КАК Дата
|ИЗ
| Справочник.ДоговорыКонтрагентов КАК ДоговорыКонтрагентов
|ГДЕ
| ДоговорыКонтрагентов.Организация = &Организация
| И ДоговорыКонтрагентов.Владелец = &Владелец
| И ДоговорыКонтрагентов.ВидДоговора = &ВидДоговора
| И ДоговорыКонтрагентов.Номер = &Номер
| И ВЫБОР
| КОГДА &Дата > ДАТАВРЕМЯ(2000, 1, 1)
| ТОГДА НАЧАЛОПЕРИОДА(ДоговорыКонтрагентов.Дата, ДЕНЬ) = НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
| ИНАЧЕ НАЧАЛОПЕРИОДА(ДоговорыКонтрагентов.Дата, ДЕНЬ) >= &НачалоГода
| ИЛИ НАЧАЛОПЕРИОДА(ДоговорыКонтрагентов.Дата, ДЕНЬ) <= ДАТАВРЕМЯ(2000, 1, 1)
| КОНЕЦ
|
|УПОРЯДОЧИТЬ ПО
| Дата УБЫВ";
запрос.УстановитьПараметр("Номер",НомерСчета);
запрос.УстановитьПараметр("Дата",?(ТипЗнч(ДатаСчета)=ТипЗнч(Дата(2000,1,1,1,1,1)),ДатаСчета,Дата(1,1,1,1,1,1)) );
запрос.УстановитьПараметр("ВидДоговора",Вид);
запрос.УстановитьПараметр("Владелец",Контр);
запрос.УстановитьПараметр("НачалоГода",НачалоГода(ТекущаяДата()));
запрос.УстановитьПараметр("Организация",Орг);
рез = запрос.Выполнить().Выбрать();
если рез.Следующий() тогда
Возврат рез.ссылка;
иначе
нов = Справочники.ДоговорыКонтрагентов.СоздатьЭлемент();
нов.Номер=НомерСчета;
если ДатаСчета>Дата(2000,1,1) тогда
нов.Дата = ДатаСчета;
нов.Наименование = "Счет №"+НомерСчета+" от "+формат(ДатаСчета,"ДФ=dd.MM.yyyy");
иначе
нов.Наименование = "Счет №"+НомерСчета;
КонецЕсли;
нов.Владелец = Контр;
нов.Организация=Орг;
нов.ВидДоговора = Вид;
нов.ВалютаВзаиморасчетов = Константы.ВалютаРегламентированногоУчета.Получить();
нов.Записать();
Сообщить("Создаем новый договор "+нов.Наименование+" для контрагента "+Контр);
Возврат нов.Ссылка;
КонецЕсли;
рс = РегистрыСведений.ОсновныеДоговорыКонтрагента.СоздатьМенеджерЗаписи();
рс.ВидДоговора = Вид;
рс.Контрагент = Контр;
рс.Организация = Орг;
рс.Прочитать();
если рс.Выбран() тогда
Возврат рс.Договор;
КонецЕсли;
Возврат Неопределено;//Контр.ОсновнойДоговорКонтрагента;
КонецФункции
&НаСервере
Функция ПроверитьНоменклатуру(Номенклатура,КатНомер, ГТД, Страна,типдок="НЕ приход")
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| (Номенклатура.НаименованиеПолное = &Наименование
| ИЛИ Номенклатура.Наименование = &Наименование)
| И Номенклатура.Артикул = &Артикул";
Запрос.УстановитьПараметр("Наименование",Номенклатура);
Запрос.УстановитьПараметр("Артикул",Лев(КатНомер,25));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 0 Тогда
НоваяНоменклатура = Справочники.Номенклатура.СоздатьЭлемент();
НоваяНоменклатура.Наименование = Номенклатура;
НоваяНоменклатура.НаименованиеПолное = Номенклатура;
НоваяНоменклатура.Артикул = КатНомер;
НоваяНоменклатура.Родитель = Справочники.Номенклатура.НайтиПоНаименованию("Товары",Истина);
НоваяНоменклатура.ЕдиницаИзмерения = Справочники.КлассификаторЕдиницИзмерения.НайтиПоНаименованию("шт");
НоваяНоменклатура.УстановитьНовыйКод();
НоваяНоменклатура.НоменклатурнаяГруппа = Справочники.НоменклатурныеГруппы.НайтиПоНаименованию("Товары");
НоваяНоменклатура.ВидНоменклатуры = Справочники.ВидыНоменклатуры.НайтиПоНаименованию("Товары");
ЭтоРоссия =ложь;
если СтрЧислоВхождений(нрег(СокрЛП(Страна)),нрег("Россия"))>0 тогда
ЭтоРоссия = Истина;
КонецЕсли;
СтранаДляЗаполнения = НайтиСтрану(СокрЛП(Страна));
Если СтранаДляЗаполнения = Справочники.СтраныМира.ПустаяСсылка() и не ЭтоРоссия Тогда
НоваяСтрана = Справочники.СтраныМира.СоздатьЭлемент();
НоваяСтрана.Наименование = СокрЛП(Страна);
НовыйКод = Лев(СокрЛП(Страна),3);
ВозможнаяСтранаПоКоду = Справочники.СтраныМира.НайтиПоКоду(НовыйКод);
Если ВозможнаяСтранаПоКоду = Справочники.СтраныМира.ПустаяСсылка() Тогда
НоваяСтрана.Код = НовыйКод;
Иначе
НоваяСтрана.Код = Лев(НовыйКод,2) + "1";
КонецЕсли;
НоваяСтрана.Записать();
Сообщить("Создали новую Страну "+Страна);
Страна = СокрЛП(НоваяСтрана.Ссылка);
//НоваяНоменклатура.СтранаПроисхождения = НоваяСтрана.Ссылка;
Иначе
//НоваяНоменклатура.СтранаПроисхождения = СтранаДляЗаполнения;
КонецЕсли;
если типдок<>"приход" и СоздаватьНоменклатуруНеТолькоПоПриходу тогда
НоваяНоменклатура.Записать();
Сообщить("Создали новую номенклатуру при загрузке " +ВРЕГ(типдок)+" " +НоваяНоменклатура.Наименование+" №"+КатНомер);
Возврат НоваяНоменклатура.Ссылка;
иначеесли типдок="приход" тогда
НоваяНоменклатура.Записать();
Сообщить("Создали новую номенклатуру при загрузке " +ВРЕГ(типдок)+" " +НоваяНоменклатура.Наименование+" №"+КатНомер);
Возврат НоваяНоменклатура.Ссылка;
иначе
Сообщить("Номенклатура "+НоваяНоменклатура.Наименование+" №"+КатНомер+" не найдена при загрузке " +ВРЕГ(типдок)+", будет использована пустая",СтатусСообщения.Важное);
Возврат Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;
Иначе
Если Выборка.Следующий() Тогда
ОбъектНоменклатура = Выборка.ССылка.ПолучитьОбъект();
СсылкаНом = ОбъектНоменклатура.Ссылка;
//НайденнаяГТД = Справочники.НомераГТД.НайтиПоКоду(ГТД);
//Если НайденнаяГТД = Справочники.НомераГТД.ПустаяСсылка() ИЛИ НайденнаяГТД = Неопределено Тогда
// НоваяГТД = Справочники.НомераГТД.СоздатьЭлемент();
// НоваяГТД.Код = ГТД;
// НоваяГТД.Записать();
// //ОбъектНоменклатура.НомерГТД =Справочники.НомераГТД.НайтиПоКоду(ГТД);
// //ОбъектНоменклатура.Записать();
// Сообщить("Создали новый ГТД "+ГТД);
//КонецЕсли;
//Если ОбъектНоменклатура.НомерГТД <> НайденнаяГТД Тогда
// //ОбъектНоменклатура.НомерГТД = НайденнаяГТД;
// //ОбъектНоменклатура.Записать();
//КонецЕсли;
//
Возврат Выборка.ССылка;
КонецЕсли;
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
функция НайтиСтрану(Страна) Экспорт
СтранаДляЗаполнения = Справочники.СтраныМира.ПустаяСсылка();
ЭтоРоссия =ложь;
если СтрЧислоВхождений(нрег(СокрЛП(Страна)),нрег("Россия"))>0 тогда
ЭтоРоссия = Истина;
Возврат Справочники.СтраныМира.ПустаяСсылка();
КонецЕсли;
запрос = новый Запрос;
запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| СтраныМира.Ссылка
|ИЗ
| Справочник.СтраныМира КАК СтраныМира
|ГДЕ
| СтраныМира.ПометкаУдаления = ЛОЖЬ
| И (СтраныМира.Наименование = &Наименование
| ИЛИ СтраныМира.НаименованиеПолное = &Наименование)";
запрос.УстановитьПараметр("Наименование",СокрЛП(Страна));
резстр = запрос.Выполнить().Выгрузить();
если резстр.Количество()>0 тогда
СтранаДляЗаполнения = резстр[0].Ссылка;
Страна = СокрЛП(СтранаДляЗаполнения);
иначе
запрос.Текст =
"ВЫБРАТЬ
| Классификатор.Код,
| Классификатор.КодАльфа3,
| Классификатор.КодАльфа2,
| Классификатор.НаименованиеПолное,
| Классификатор.Наименование
|ПОМЕСТИТЬ Клас
|ИЗ
| &Классификатор КАК Классификатор
|
|ИНДЕКСИРОВАТЬ ПО
| Классификатор.Код,
| Классификатор.Наименование
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 1
| Клас.Код,
| Клас.Наименование,
| Клас.КодАльфа2,
| Клас.КодАльфа3,
| Клас.НаименованиеПолное
|ИЗ
| Клас КАК Клас
|ГДЕ
| (Клас.Наименование = &Наименование
| ИЛИ Клас.НаименованиеПолное = &Наименование)";
МодульРаботаСАдресами = ОбщегоНазначения.ОбщийМодуль("РаботаСАдресами");
запрос.УстановитьПараметр("Классификатор", МодульРаботаСАдресами.ТаблицаКлассификатора());
//запрос.УстановитьПараметр("Классификатор", Справочники.СтраныМира.ТаблицаКлассификатора());
запрос.УстановитьПараметр("Наименование",СокрЛП(Страна));
резклас = Запрос.Выполнить().Выгрузить();
если резклас.Количество()>0 тогда
нов = Справочники.СтраныМира.СоздатьЭлемент();
ЗаполнитьЗначенияСвойств(нов,резклас[0]);
//нов.Наименование = СокрЛП(Страна);
попытка
нов.Записать();
СтранаДляЗаполнения = нов.Ссылка;
Страна = СокрЛП(СтранаДляЗаполнения);
Сообщить("Создаем новую страну мира "+ нов.Наименование);
исключение
СтранаДляЗаполнения = Справочники.СтраныМира.ПустаяСсылка();
Страна = СокрЛП(СтранаДляЗаполнения);
КонецПопытки;
иначе
СтранаДляЗаполнения = Справочники.СтраныМира.ПустаяСсылка();
КонецЕсли;
КонецЕсли;
Возврат СтранаДляЗаполнения;
КонецФункции
&НаСервереБезКонтекста
Процедура СозданиеСчетФактуры(Ссылка,Номер,ДатаДокумента)
найд = Документы.СчетФактураВыданный.НайтиПоРеквизиту("ДокументОснование",Ссылка);
если ЗначениеЗаполнено(найд) тогда
СчетФактура = найд.ПолучитьОбъект();
иначе
СчетФактура = Документы.СчетФактураВыданный.СоздатьДокумент();
Сообщить("Создаем новую С/Ф для "+ссылка);
КонецЕсли;
ЗаполнитьЗначенияСвойств(СчетФактура,Ссылка);
СчетФактура.Дата = ДатаДокумента;
СчетФактура.Номер = Номер;
СчетФактура.ВидСчетаФактуры = Перечисления.ВидСчетаФактурыВыставленного.НаРеализацию;
СчетФактура.ДокументОснование = Ссылка;
СчетФактура.Контрагент = Ссылка.КОнтрагент;
СчетФактура.ДоговорКонтрагента = Ссылка.ДоговорКонтрагента;
СчетФактура.СуммаДокумента = Ссылка.СуммаДокумента;
СчетФактура.ВалютаДокумента = Ссылка.ВалютаДокумента;
СчетФактура.Организация = Ссылка.Организация;
ТЧСчетФактура = СчетФактура.ДокументыОснования.Добавить();
ТЧСчетФактура.ДокументОснование = Ссылка;
СчетФактура.Записать();
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПроверкаНаличияДокументаВБазе(Документ, НомерДокумента, ДатаДокумента)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| "+Документ.метаданные().Имя+ ".Ссылка
|ИЗ
| Документ."+Документ.метаданные().Имя+" КАК "+Документ.метаданные().Имя+"
|ГДЕ
| "+Документ.метаданные().Имя+".Номер = &Номер
| И "+Документ.метаданные().Имя+".Дата МЕЖДУ &ДатаС И &ДатаПо";
Запрос.УстановитьПараметр("Номер",НомерДокумента);
Запрос.УстановитьПараметр("ДатаС",НачалоГода(ДатаДокумента));
Запрос.УстановитьПараметр("ДатаПо",КонецГода(ДатаДокумента));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 0 Тогда
Возврат "Документа нет";
Иначе
//Ответ = Вопрос("Документ с номером "+НомерДокумента+" уже существует в базе. Перезаписать?", РежимДиалогаВопрос.ДаНет);
Сообщить("Документ "+Документ.метаданные().Синоним+" с номером "+НомерДокумента+" уже существует в базе. Он будет пропущен.");
Возврат "Пропуск";
//Если истина тогда //Ответ = КодВозвратаДиалога.Да Тогда
// Выборка.Следующий();
// Возврат Выборка.Ссылка.ПолучитьОбъект();
//Иначе
// Возврат "Новый номер";
//КонецЕсли;
КонецЕсли;
КонецФункции
&НаСервереБезКонтекста
Функция ПроверкаНаличияПоступленияВБазе(Документ, НомерДокумента, ДатаДокумента, Контрагент)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| "+Документ.метаданные().Имя+ ".Ссылка
|ИЗ
| Документ."+Документ.метаданные().Имя+" КАК "+Документ.метаданные().Имя+"
|ГДЕ
| "+Документ.метаданные().Имя+".НомерВходящегоДокумента = &Номер
| И "+Документ.метаданные().Имя+".Контрагент = &Контрагент
| И "+Документ.метаданные().Имя+".ДатаВходящегоДокумента МЕЖДУ &ДатаС И &ДатаПо";
Запрос.УстановитьПараметр("Номер", НомерДокумента);
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("ДатаС", НачалоГода(ДатаДокумента));
Запрос.УстановитьПараметр("ДатаПо", КонецГода(ДатаДокумента));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Количество() = 0 Тогда
Возврат "Документа нет";
Иначе
//Ответ = Вопрос("Документ с номером "+НомерДокумента+" уже существует в базе. Перезаписать?", РежимДиалогаВопрос.ДаНет);
Сообщить("Документ "+Документ.метаданные().Синоним+" с номером "+НомерДокумента+" уже существует в базе. Он будет пропущен.");
Возврат "Пропуск";
//Если истина тогда //Ответ = КодВозвратаДиалога.Да Тогда
// Выборка.Следующий();
// Возврат Выборка.Ссылка.ПолучитьОбъект();
//Иначе
// Возврат "Новый номер";
//КонецЕсли;
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура Загрузка(Команда)
АдресХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Файл),ЭтаФорма.УникальныйИдентификатор);
ЗагрузкаНаСервере(АдресХранилища);
КонецПроцедуры
&НаСервере
Процедура ПриЗагрузкеДанныхИзНастроекНаСервере(Настройки)
проставитьСгрупп();
КонецПроцедуры
&НаКлиенте
Процедура ОрганизацияПриИзменении(Элемент)
проставитьСгрупп();
КонецПроцедуры
&НаСервере
процедура проставитьСгрупп()
если ЗначениеЗаполнено(Организация) и Организация = Справочники.Организации.НайтиПоКоду("МБ-000004") тогда
Сгруппировать=Истина;
иначе
Сгруппировать = ложь;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ЗагрузитьЧекиНаСервере(АдресХран)
локф = КаталогВременныхФайлов()+"\obmen.dbf";
дд = ПолучитьИзВременногоХранилища(АдресХран);
дд.Записать(локф);
dBase = новый XBase(локф);
Таблица=Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("ДатаДокумента");
Таблица.Колонки.Добавить("ТипДокумента");
Таблица.Колонки.Добавить("Номенклатура");
Таблица.Колонки.Добавить("Количество");
Таблица.Колонки.Добавить("Сумма");
Таблица.Колонки.Добавить("КатНомер");
Таблица.Колонки.Добавить("СтавкаНДС");
Таблица.Колонки.Добавить("СуммаНДС");
Таблица.Колонки.Добавить("Организация");
Таблица.Колонки.Добавить("ОрганизацияИНН");
Таблица.Колонки.Добавить("Склад");
//заполнение таблицы
dBase.Первая();
Пока Не dBase.ВКонце() Цикл
Если СокрЛП(Организация.ИНН) <> СокрЛП(dBase.FirmINN) Тогда
dBase.Следующая();
Продолжить;
КонецЕсли;
СтрТаб=Таблица.Добавить();
СтрТаб.ДатаДокумента=dBase.Data;
СтрТаб.Номенклатура=СокрЛП(dBase.Nomen);
СтрТаб.Количество=dBase.Kol;
СтрТаб.Сумма=dBase.Summa;
СтрТаб.КатНомер=СокрЛП(dBase.KatNomer);
СтрТаб.Склад=СокрЛП(dBase.Sklad);
попытка
СтрТаб.СтавкаНДС = СокрЛП(dBase.StavNDS);
СтрТаб.СуммаНДС = dBase.SumNDS;
Исключение КонецПопытки;
dBase.Следующая();
КонецЦикла;
ПеремСклад = "";
НовыйДокумент = Неопределено;
Если Таблица.Количество() > 0 Тогда
Таблица.Сортировать("Склад Возр, ДатаДокумента Возр");
Для каждого Стр из Таблица Цикл
Если ПеремСклад <> Стр.Склад Тогда
Если НовыйДокумент <> Неопределено Тогда
НовыйДокумент.Записать();
КонецЕсли;
НовыйДокумент = Документы.ОтчетОРозничныхПродажах.СоздатьДокумент();
НовыйДокумент.ВалютаДокумента = Константы.ВалютаРегламентированногоУчета.Получить();
НовыйДокумент.ВидОперации = Перечисления.ВидыОперацийОтчетОРозничныхПродажах.ОтчетККМОПродажах;
НовыйДокумент.Организация = Организация;
НовыйДокумент.Ответственный = ПараметрыСеанса.ТекущийПользователь;
НовыйДокумент.СчетКасса = ПланыСчетов.Хозрасчетный.КассаОрганизации;
НовыйДокумент.Дата = КонецДня(Стр.ДатаДокумента);
НовыйДокумент.Склад = СопоставитьСклад(Стр.Склад);
Если ЗначениеЗаполнено(НовыйДокумент.Склад) И ЗначениеЗаполнено(НовыйДокумент.Склад.ПодразделениеОрганизации)Тогда
НовыйДокумент.ПодразделениеОрганизации = НовыйДокумент.Склад.ПодразделениеОрганизации;
КонецЕсли;
КонецЕсли;
Номенклатура = НайтиНоменклатуру(стр.Номенклатура, стр.КатНомер);
НовСтрока = НовыйДокумент.Товары.Добавить();
НовСтрока.Номенклатура = Номенклатура;
НовСтрока.Количество = стр.Количество;
НовСтрока.Сумма = стр.Сумма;
НовСтрока.Цена = стр.Сумма / ?(стр.Количество =0 , 1, стр.Количество);
//НовСтрока.СтавкаНДС = Перечисления.СтавкиНДС.БезНДС;
НовСтрока.СтавкаНДС = СопоставитьСтавкуНДС(стр.СтавкаНДС);
НовСтрока.СуммаНДС = стр.СуммаНДС;
Если НовСтрока.СуммаНДС <> 0 Тогда
НовыйДокумент.СуммаВключаетНДС = Истина;
КонецЕсли;
НовСтрока.СчетУчета = ПланыСчетов.Хозрасчетный.ТоварыНаСкладах;
НовСтрока.СчетРасходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.02.1");
НовСтрока.СчетДоходов = ПланыСчетов.Хозрасчетный.НайтиПоКоду("90.01.1");
ПеремСклад = Стр.Склад;
КонецЦикла;
НовыйДокумент.Записать();
КонецЕсли;
КонецПроцедуры
Функция НайтиНоменклатуру(Номенклатура, КатНомер)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| (Номенклатура.НаименованиеПолное = &Наименование
| ИЛИ Номенклатура.Наименование = &Наименование)
| И Номенклатура.Артикул = &Артикул";
Запрос.УстановитьПараметр("Наименование",Номенклатура);
Запрос.УстановитьПараметр("Артикул",Лев(КатНомер,25));
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
ОбъектНоменклатура = Выборка.ССылка.ПолучитьОбъект();
СсылкаНом = ОбъектНоменклатура.Ссылка;
//НайденнаяГТД = Справочники.НомераГТД.НайтиПоКоду(ГТД);
//Если НайденнаяГТД = Справочники.НомераГТД.ПустаяСсылка() ИЛИ НайденнаяГТД = Неопределено Тогда
// НоваяГТД = Справочники.НомераГТД.СоздатьЭлемент();
// НоваяГТД.Код = ГТД;
// НоваяГТД.Записать();
// //ОбъектНоменклатура.НомерГТД =Справочники.НомераГТД.НайтиПоКоду(ГТД);
// //ОбъектНоменклатура.Записать();
// Сообщить("Создали новый ГТД "+ГТД);
//КонецЕсли;
//Если ОбъектНоменклатура.НомерГТД <> НайденнаяГТД Тогда
// //ОбъектНоменклатура.НомерГТД = НайденнаяГТД;
// //ОбъектНоменклатура.Записать();
//КонецЕсли;
Возврат Выборка.ССылка;
Иначе
Сообщить("В базе не найдена номенклатура " + Номенклатура);
Возврат Справочники.Номенклатура.ПустаяСсылка();
КонецЕсли;
КонецФункции
&НаКлиенте
Процедура ЗагрузитьЧеки(Команда)
АдресХранилища = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Файл),ЭтаФорма.УникальныйИдентификатор);
ЗагрузитьЧекиНаСервере(АдресХранилища);
КонецПроцедуры
&НаСервере
Функция СопоставитьСтавкуНДС(СтавкаНДС)
Если СтавкаНДС = "Ставка20" или СтавкаНДС = "20%" Тогда
Возврат Перечисления.СтавкиНДС.НДС20;
ИначеЕсли СтавкаНДС = "Ставка18" или СтавкаНДС = "18%" Тогда
Возврат Перечисления.СтавкиНДС.НДС18;
ИначеЕсли СтавкаНДС = "Ставка10" или СтавкаНДС = "10%" Тогда
Возврат Перечисления.СтавкиНДС.НДС10;
ИначеЕсли СтавкаНДС = "Ставка7" или СтавкаНДС = "7%" Тогда
Возврат Перечисления.СтавкиНДС.НДС7;
ИначеЕсли СтавкаНДС = "Ставка5" или СтавкаНДС = "5%" Тогда
Возврат Перечисления.СтавкиНДС.НДС5;
ИначеЕсли СтавкаНДС = "БезНДС" Тогда
Возврат Перечисления.СтавкиНДС.БезНДС;
Иначе
Возврат Перечисления.СтавкиНДС.ПустаяСсылка();
КонецЕсли;
КонецФункции
&НаСервере
Функция СопоставитьСклад(СкладКодЗПЧ)
Если Найти(НРег(СтрокаСоединенияИнформационнойБазы()),"автоточка")>0 Тогда
Если СокрЛП(СкладКодЗПЧ) = "H-0000014" Тогда
Возврат Справочники.Склады.НайтиПоКоду("H-0000014");
Иначе
Возврат Справочники.Склады.НайтиПоКоду("H-0000014");
КонецЕсли;
ИначеЕсли Найти(НРег(СтрокаСоединенияИнформационнойБазы()),"автомастер")>0 Тогда
Если СокрЛП(СкладКодЗПЧ) = "OFC000057" Тогда
Возврат Справочники.Склады.НайтиПоКоду("A00000017");
ИначеЕсли СокрЛП(СкладКодЗПЧ) = "OFC000041" Тогда
Возврат Справочники.Склады.НайтиПоКоду("OFC000041");
Иначе
Возврат Справочники.Склады.НайтиПоНаименованию("Основной склад");
КонецЕсли;
Иначе
Возврат Справочники.Склады.НайтиПоНаименованию("Основной склад");
КонецЕсли;
КонецФункции