Имя: Пароль:
1C
1С v8
Ищу обработку для сверки товарных остатков УТ 11 и БП 2.0
0 Paul_Nevada
 
05.05.16
17:05
Поделитесь, если кто-то имеет "заготовки" подобные, плиз.
1 Paul_Nevada
 
05.05.16
17:06
буду рад и идее по ее написанию
2 mikecool
 
05.05.16
17:06
эксель, не?
3 Paul_Nevada
 
05.05.16
17:06
(2) ну не)
4 mikecool
 
05.05.16
17:07
(3) а чо? впр рвет и мечет
5 Paul_Nevada
 
05.05.16
17:08
(4) впр это кто?)
6 Timon1405
 
05.05.16
17:08
(0) Лезете по ком в другую базу,синхронизируетесь по номенклатуре, тащите остатки, выводите в табдок в исходной базе
7 Timon1405
 
05.05.16
17:08
8 Звездец
 
05.05.16
17:09
ты бы хоть ситуацию описал зачем тебе это понадобилось? ручками ведете 2 независимые базы?
9 mikecool
 
05.05.16
17:09
(5) эксель вычеркиваем ))
10 Paul_Nevada
 
05.05.16
17:09
(9) впр - кто???)))
11 Paul_Nevada
 
05.05.16
17:11
ок, впр - что?)))
12 mikecool
 
05.05.16
17:11
(10) ВПР
Показать всеПоказать все
Скрыть всеСкрыть все
Ищет значение в первом столбце массива таблицы и возвращает значение в той же строке из другого столбца массива таблицы.

Буква В в названии функции ВПР означает «вертикально». Функция ВПР используется вместо функции ГПР, если сравниваемые значения расположены в столбце слева от искомых данных.

Синтаксис
13 doguje
 
05.05.16
17:17
Есть такой файл
  revise_remainder.rar
не знаю как его отправить?
14 mikecool
 
05.05.16
17:22
ничего сложного с экселем
в базах запросом хапаем линейную таблицу остатков, потом впр-им в экселе и наслаждаемся
на все про все - пол часа с перекуром
15 doguje
 
05.05.16
17:31
здесь лежит:
https://www.10minutestorage.com/nest.wrench.daughter

10 мин
16 Звездец
 
05.05.16
17:33
опять спамер завелся (15)
17 doguje
 
05.05.16
18:07
Я не спамер - я 1с-ник!

Уточните задачу.
1) Перенос из торговли в бухгалтерию
2) Перенос наоборот
3) Сравнение и выявление отличий
ну или что-другое...
18 doguje
 
05.05.16
18:09
перем xml_fso;
перем xml_file;
перем xml_СтекТегов;
перем xml_ТегОткрыт;
перем xml_Отступы;
Перем ИмяНачКаталога;

///////////////////////////////////////////////////////////////////////
//Открывает файл XML в режиме записи. Если файл существовал, перезаписывает его.
//Принимает параметр прм_ИмяФайла - имя файла (укажите полный путь и расширение .XML)
Процедура xml_СоздатьФайл(прм_ИмяФайла)
    xml_fso=СоздатьОбъект("Scripting.FileSystemObject");
    xml_file=xml_fso.CreateTextFile(прм_ИмяФайла, -1, 0); //создать файл, перезаписывая существующий
    xml_file.WriteLine("<?xml version=""1.0"" encoding=""windows-1251""?>"); //Пишем заголовок XML
    xml_СтекТегов=СоздатьОбъект("СписокЗначений");
    xml_Отступы="";
    xml_ТегОткрыт=0;
КонецПроцедуры    

///////////////////////////////////////////////////////////////////////
//Записывает начало элемента (тега XML). Имя можно указывать в угловых скобках.
Процедура xml_ЗаписатьНачалоЭлемента(прм_ИмяТега)
    перем стр;
    
    Если xml_ТегОткрыт=1 Тогда
        xml_ТегОткрыт=0;
        xml_file.WriteLine(">");
        xml_Отступы=xml_Отступы+"  ";
    КонецЕсли;
    
    стр=прм_ИмяТега;
    стр=СтрЗаменить(стр, "<", "");
    стр=СтрЗаменить(стр, ">", "");
    
    xml_СтекТегов.ДобавитьЗначение(стр);
    xml_file.Write(xml_Отступы+"<"+стр);
    xml_ТегОткрыт=1;
КонецПроцедуры    

///////////////////////////////////////////////////////////////////////
//Записывает атрибут (параметр) тега XML.
Процедура xml_ЗаписатьАтрибут(прм_ИмяАтрибута, прм_ЗначениеАтрибута)
    Если xml_ТегОткрыт=0 Тогда                                                                          
       Сообщить("Перед записью атрибута необходимо записать начало элемента!","!"); а=10/0;                                  
    КонецЕсли;                                                                                                
    
    
    стр=прм_ЗначениеАтрибута;
    стр=СтрЗаменить(стр, "&", "&amp;");
    стр=СтрЗаменить(стр, """", "&quot;");
    стр=СтрЗаменить(стр, "<", "&lt;");
    стр=СтрЗаменить(стр, ">", "&gt;");
    стр=СтрЗаменить(стр, "'", "&apos;");
    xml_file.Write(" "+прм_ИмяАтрибута+"="+""""+стр+"""");
КонецПроцедуры    // xml_ЗаписатьЗаписатьАтрибут

///////////////////////////////////////////////////////////////////////
//Записывает конец элемента (тега XML). Имя закрываемого тега можно указывать в угловых скобках,
//а можно - не указывать вовсе.

Процедура xml_ЗаписатьКонецЭлемента(прм_ОжидаемоеИмяТега="")
    перем стрИмяТега, а;
    Если xml_СтекТегов.РазмерСписка()<1 Тогда
        Сообщить("Попытка закрыть неоткрытый элемент!","!"); а=10/0;                                      
    КонецЕсли;
    
    стрИмяТега=xml_СтекТегов.ПолучитьЗначение(xml_СтекТегов.РазмерСписка());
    
    Если ПустаяСтрока(прм_ОжидаемоеИмяТега)=0 Тогда
        стр=прм_ОжидаемоеИмяТега;
        стр=СтрЗаменить(стр, "<", "");
        стр=СтрЗаменить(стр, ">", "");
        стр=СтрЗаменить(стр, "/", "");
        
        Если стр<>стрИмяТега Тогда
            Сообщить("Ожидается имя тега "+стр+", а закрыто "+стрИмяТега,"!"); а=10/0;                                      
        КонецЕсли;
    КонецЕсли;
    
    
    xml_СтекТегов.УдалитьЗначение(xml_СтекТегов.РазмерСписка());
    Если xml_ТегОткрыт=1 Тогда
        xml_ТегОткрыт=0;
        xml_file.WriteLine("/>");
        Возврат;
    КонецЕсли;
    xml_Отступы=лев(xml_Отступы, СтрДлина(xml_Отступы)-2);
    xml_file.WriteLine(xml_Отступы+"</"+стрИмяТега+">");
    
КонецПроцедуры    // xml_ЗаписатьКонецЭлемента


///////////////////////////////////////////////////////////////////////
//Закрывает открытый файл XML. После окончания работы с файлом его необходимо закрыть.
Функция xml_Закрыть()
    xml_file.Close();
    Если xml_СтекТегов.РазмерСписка()<>0 Тогда
        Сообщить("Имеются незакрытые элементы XML!","!"); а=10/0;                                      
    КонецЕсли;
КонецФункции    // xml_Закрыть

//********************************************
Процедура Сформировать()
    Перем ДатаЦены,ЦенаЦены,ЕдЦены,ВалЦены,НаценкаЦены,НайденнаяЦена;
    
    Если ПустоеЗначение(ВыбФирма)=1 Тогда
        Сообщить("Нужно выбрать фирму");
        Возврат;
    КонецЕсли;
    Если ПустоеЗначение(ВыбСклад)=1 Тогда
        Сообщить("Нужно выбрать склад");
        Возврат;
    КонецЕсли;
    
    Регистры=СоздатьОбъект("Регистры");
    РегОст=Регистры.ОстаткиТМЦ;
    
    РегОст.УстановитьЗначениеФильтра("Фирма",ВыбФирма);
    РегОст.УстановитьЗначениеФильтра("Склад",ВыбСклад);
    Если ПустоеЗначение(К)=0 Тогда
        Если К<ТекущаяДата() Тогда
            РегОст.ВременныйРасчет();
            Регистры.РассчитатьРегистрыПо(К);
        КонецЕсли;
    КонецЕсли;
    РегОст.ВыгрузитьИтоги(каиТ);
    
    каиТ.УдалитьКолонку("ЦенаПрод");
    каиТ.Свернуть("Номенклатура","Количество");
    
    стрИмяФайла=ФайлВыгрузки;
    Сообщить("Начало записи: "+стрИмяФайла);
    Сообщить("Время начала: "+ТекущееВремя());
    xml_СоздатьФайл(стрИмяФайла);
    xml_ЗаписатьНачалоЭлемента("<ОстаткиТМЦ>");
        xml_ЗаписатьНачалоЭлемента("<Фирма>");
            xml_ЗаписатьАтрибут("Фирма", ВыбФирма);
            
                xml_ЗаписатьНачалоЭлемента("<Склад>");
                xml_ЗаписатьАтрибут("Склад", ВыбСклад);
                xml_ЗаписатьАтрибут("ЭтоРозничныйСклад", ВыбСклад.РозничныйСклад);
                Если каиТ.КоличествоСтрок()=0 Тогда
                    xml_ЗаписатьНачалоЭлемента("<СтрокаОстатка>");
                    xml_ЗаписатьАтрибут("Код", "0");
                    xml_ЗаписатьКонецЭлемента("</СтрокаОстатка>");
                КонецЕсли;
                каиТ.ВыбратьСтроки();
                Пока каиТ.ПолучитьСтроку() = 1 Цикл
                    xml_ЗаписатьНачалоЭлемента("<СтрокаОстатка>");
                    
                    xml_ЗаписатьАтрибут("Код", каиТ.Номенклатура.Код);
                    xml_ЗаписатьАтрибут("Номенклатура", каиТ.Номенклатура);
                    xml_ЗаписатьАтрибут("Количество", каиТ.Количество);
                    
                    xml_ЗаписатьКонецЭлемента("</СтрокаОстатка>");
                КонецЦикла;
    
                xml_ЗаписатьКонецЭлемента("</Склад>");
        xml_ЗаписатьКонецЭлемента("</Фирма>");
    xml_ЗаписатьКонецЭлемента("</ОстаткиТМЦ>");
    xml_Закрыть();
    Сообщить("Конец записи: "+ТекущееВремя());
    
КонецПроцедуры // Сформировать()

//********************************************
// Предопределенная процедура.
//
Процедура ПриНачалеВыбораЗначения(Идент,Флаг)
    
    Если Идент = "ФайлВыгрузки" Тогда
        Флаг = 0;  
        ИмяФайла = ФайлВыгрузки;
        Если ФС.ВыбратьФайл(0,ИмяФайла,ИмяНачКаталога,"Выберите промежуточный файл переноса","Файлы xml (*.xml) |*.xml","xml",20) = 1 Тогда // "Файлы xml (*.xml) |*.xml"
            ФайлВыгрузки = ИмяНачКаталога+ИмяФайла;
        КонецЕсли;        
    КонецЕсли;
    
КонецПроцедуры // ПриНачалеВыбораЗначения()
19 doguje
 
05.05.16
18:10
Это был код из "1_СверкаОстатков_Торг_XML.ert"
их там два в архиве "revise_remainder.rar"
20 doguje
 
05.05.16
18:13
Второй называется "2_СверкаОстатков_Бух_XML.ert"
откуда скачал не помню, но вроде рабочий код.
Просто сейчас над похожей задачей работаю.

ПС: мне пора домой. Всем пока!
21 Локи-13
 
05.05.16
18:16
(1) вообще ерунда задача

по кому соединись, получи таблицу, и верти как хочешь
22 Звездец
 
05.05.16
18:18
(21) вопрос только в одном, как сопоставлять номенклатуру, если базы ведутся независимо друг от друга
23 Злопчинский
 
05.05.16
18:53
(22)  навоз вопрос
То что совпадает по наименованию - автоматом
То что совпадает по набору слов в наименовании - автоматом
Остальное - накопительно при сеансах сверки компонентной нечеткого сравнения

У меня на клюшках сравнение номенклатуры по итогам между торг и бух вертится уже лет шесть

Все ошибки которые выплывают - ржакак-обоссака - изиза какихто левых действий в бухбазе кривыми ручонками бухгалтеров
24 aspirator23
 
05.05.16
21:08
25 mikecool
 
05.05.16
22:26
(23) и зачем такие навороты?
достаточно реквизита, одинакового между базами
26 Звездец
 
05.05.16
22:45
(25) а если его нет? Если есть способ однозначной идентификации, то такой вопрос вообще не возникает
27 mikecool
 
05.05.16
22:47
(26) надо его завести
проще один раз скопом пронумеровать и по мере необходимости мелкие части, нежели каждый раз по новой начинать сравнивать
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.