Форум Кургана и Курганской области и наших друзей

Зима. Форум Кургана и Курганской области и наших друзей
04 Декабрь 2020, 16:45:12 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
Новости:
 
   Начало   Помощь Войти Регистрация  
Страниц: 1 ... 5 6 [7] 8 9   Вниз
  Печать  
Автор Тема: Вопросы по 1С  (Прочитано 9267 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ysv45
Гость
« Ответ #90 : 15 Сентябрь 2011, 20:25:12 »

У меня где-то лежит книга "Создание внешних компонент для 1С" могу продать.
Записан
M@XX
burn let it all burn...
Действительный статский советник
********

Карма: 226
Offline Offline

Пол: Мужской
Сообщений: 4696


90027_veteran.gif 46859_medal1.gif

Your Buny Wrote


WWW Награды
« Ответ #91 : 19 Сентябрь 2011, 13:15:10 »

Сейчас попробовал загрузить библиотеку через ЗагрузитьВнешнююКомпоненту...
Ругается на CLSID
Запускать от Админа 1С Сама зарегится должна

У меня где-то лежит книга "Создание внешних компонент для 1С" могу продать.


Технология на диске ИТС описана.
Записан

1С: Предприятие. Доступно и всерьез!
ЧЕРЕЗМЕРНОЕ УПОТРЕБЛЕНИЕ ПИВА ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ
Vertex
Коллежский секретарь
****

Карма: 12
Offline Offline

у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 373



Награды
« Ответ #92 : 29 Сентябрь 2011, 13:10:37 »

Доброго дня.
Начал писать программу выгрузки..

Код:
// **************Запрос к регистру остатков***********************
    Запрос  = СоздатьОБъект("ЗАпрос");

ТекстЗапроса = "
|С НачДата По КонДата;
|Фирма = Регистр.ОстаткиТМЦ.Фирма;
|Склад = Регистр.ОстаткиТМЦ.Склад;
|Товар = Регистр.ОстаткиТМЦ.Номенклатура;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Поставщик = Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.Контрагент;
|Группировка Товар Без Групп;
|Группировка Фирма Без Групп;
|Группировка Склад Без Групп;
|Функция КОст = КонОст(Количество);
//|Условие (Фирма = ВыбФирма);
//|Условие (ВыбСклад = Склад);
|";
           
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат;
КонецЕсли;

Если  Запрос.Выгрузить(ТЗ,0,0)=0 Тогда
Возврат;
КонецЕсли;

// *************Добавим к таблице 3 колонки*******************************
ТЗ.НоваяКолонка("ЦенаЗак","Число",10,2);
ТЗ.НоваяКолонка("Флаг","Число",1);
ТЗ.НоваяКолонка("Поставщик","Справочник.Контрагенты");
   
// *********Найдём последнего поставщика от которого приходил товар******************
ТЗ.ВыбратьСтроки();
    Сч      = 0;
_Булево = 0;   
_СтрПоиска  = 0;
_ТоварБуфер = "";
_КонтрБуфер = "";
Пока ТЗ.ПолучитьСтроку()=1 Цикл
Сч = Сч + 1;       

Если ТЗ.Товар = _ТоварБуфер Тогда
ТЗ.УстановитьЗначение(Сч,"Поставщик",_КонтрБуфер);
ТЗ.УстановитьЗначение(Сч,"Флаг",1); 
Сообщить(" Установлен поставщик из буфера "+ ТЗ.Товар);
Продолжить;
КонецЕсли;

ДокПост.ОбратныйПорядок(1);
ДокПост.ВыбратьДокументы();
Пока ДокПост.ПолучитьДокумент()=1 Цикл 
ДокПост.ВыбратьСтроки();
Пока ДокПост.ПолучитьСтроку()=1 Цикл
Если (СокрЛП(ТЗ.Товар) = СокрЛП(ДокПост.Номенклатура)) И (ТЗ.Флаг = 0)  Тогда 
ТЗ.УстановитьЗначение(Сч,"Поставщик",ДокПост.Контрагент);
ТЗ.УстановитьЗначение(Сч,"Флаг",1);
_ТоварБуфер = ДокПост.Номенклатура;
_КонтрБуфер = ДокПост.Контрагент;
_Булево = 1;                     
Сообщить(" Установлен флаг 1 "+ДокПост.Номенклатура);
Прервать;
//Сообщить(+"  "+ТЗ.Товар+"  "+ДокПост+"  "+ТЗ.Поставщик );
ИначеЕсли ТЗ.Флаг = 1 Тогда
// Сообщить("Сработало1");
_Булево = 1;
Прервать;
КонецЕсли; 
КонецЦикла;
Если _Булево = 1 Тогда         
// Сообщить("Сработало1");
_Булево = 0;
Прервать;
КонецЕсли;
КонецЦикла;   
Если ТЗ.Итог("Флаг")=ТЗ.КоличествоСтрок() Тогда
Сообщить(" !!ALERT!! Cработало условие выхода  ");
Прервать; //цикл по документам
КонецЕсли;
Сообщить("  "+Сч);
КонецЦикла;
     
Сообщить("  "+ТЗ.Итог("Флаг")+"  "+ТЗ.КоличествоСтрок());
_НомерСтр = 0;
    Если Не(ТЗ.Итог("Флаг")=ТЗ.КоличествоСтрок()) Тогда
ТЗ.ВыбратьСтроки();
    Пока ТЗ.ПолучитьСтроку()=1 Цикл
    Если ТЗ.Флаг=0 Тогда
    ТЗ.Флаг = 2;
    КонецЕсли;
КонецЦикла;                             
Сообщить("Флаги исправлены");
    КонецЕсли;


ЗафиксироватьТранзакцию(); 
Сообщить("!!! Транзакция зафиксирована !!!");
КонецПроцедуры  //Сформировать() 

Попрошу опытных посмотреть код и если есть какие - либо замечания озвучить....
Заранее спасибо
Записан

Когда мужчине плохо - он ищет женщин. Когда мужчине хорошо - его ищут женщины
M@XX
burn let it all burn...
Действительный статский советник
********

Карма: 226
Offline Offline

Пол: Мужской
Сообщений: 4696


90027_veteran.gif 46859_medal1.gif

Your Buny Wrote


WWW Награды
« Ответ #93 : 03 Октябрь 2011, 13:49:36 »

Доброго дня.
Начал писать программу выгрузки..

Попрошу опытных посмотреть код и если есть какие - либо замечания озвучить....
Заранее спасибо

Ну поидее вот тутвот уже споткнутся должна
Код:
Запрос.Выгрузить(ТЗ,0,0)

Либо не весь код предьявлен. Переменная тз неопределена.

Я бы воздержался от таких вот длинныйх конструкций

Код:
Поставщик = Регистр.ОстаткиТМЦ.ТекущийДокумент[b].[/b]ПоступлениеТМЦ.Контрагент

Все что дальше второй точки очень сильно замедляет запрос, да и просто обращение.

Еше не понятно Вот это зачем "ПоступлениеТМЦ"?

Пример.
Док = Регистр.ОстаткиТМЦ.ТекущийДокумент;
Поставщик = Док.Контрагент;

Отработает вразы быстрее.


ЗафиксироватьТранзакцию(); - А где начать?

Сдается мне не весь код приведен...

« Последнее редактирование: 03 Октябрь 2011, 13:54:49 от M@XX » Записан

1С: Предприятие. Доступно и всерьез!
ЧЕРЕЗМЕРНОЕ УПОТРЕБЛЕНИЕ ПИВА ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ
Vertex
Коллежский секретарь
****

Карма: 12
Offline Offline

у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 373



Награды
« Ответ #94 : 03 Октябрь 2011, 18:14:14 »

Да код не весь ...

Вот весь код процедуры и код вызова

Код:
Процедура СформироватьДанныеПоТоварам(ДБФ)

ДокПост = СоздатьОБъект("Документ.ПоступлениеТМЦ");
    ТЗ     = СоздатьОБъект("ТаблицаЗначений");


// **************Запрос к регистру остатков***********************
    Запрос  = СоздатьОБъект("ЗАпрос");

ТекстЗапроса = "
|С НачДата По НачДата;
|Фирма = Регистр.ОстаткиТМЦ.Фирма;
|Склад = Регистр.ОстаткиТМЦ.Склад;
|Товар = Регистр.ОстаткиТМЦ.Номенклатура;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Поставщик = Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.Контрагент;
|Группировка Товар Без Групп;
|Группировка Фирма Без Групп;
|Группировка Склад Без Групп;
|Функция КОст = КонОст(Количество);
//|Условие (Фирма = ВыбФирма);
//|Условие (ВыбСклад = Склад);
|";
           
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат;
КонецЕсли;

Если  Запрос.Выгрузить(ТЗ,0,0)=0 Тогда
Возврат;
КонецЕсли;

// *************Добавим к таблице 3 колонки*******************************
ТЗ.НоваяКолонка("ЦенаЗак","Число",10,2);
ТЗ.НоваяКолонка("Флаг","Число",1);
ТЗ.НоваяКолонка("Поставщик","Справочник.Контрагенты");
   
// *********Найдём последнего поставщика от которого приходил товар******************
ТЗ.ВыбратьСтроки();
    Сч        = 0;
_Булево   = 0;   
_СтрПоиска    = 0;
_ТоварБуфер   = "";
_КонтрБуфер   = "";
_ЦенаЗакБуфер = 0; 

Пока ТЗ.ПолучитьСтроку()=1 Цикл
Сч = Сч + 1;       

Если ТЗ.Товар = _ТоварБуфер Тогда
ТЗ.УстановитьЗначение(Сч,"Поставщик",_КонтрБуфер);
ТЗ.УстановитьЗначение(Сч,"Флаг",1); 
ТЗ.УстановитьЗначение(Сч,"ЦенаЗак",_ЦенаЗакБуфер);
Сообщить(" Установлен поставщик из буфера "+ ТЗ.Товар);
Продолжить;
КонецЕсли;

ДокПост.ОбратныйПорядок(1);
ДокПост.ВыбратьДокументы();
Пока ДокПост.ПолучитьДокумент()=1 Цикл 
ДокПост.ВыбратьСтроки();
Пока ДокПост.ПолучитьСтроку()=1 Цикл
Если (СокрЛП(ТЗ.Товар) = СокрЛП(ДокПост.Номенклатура)) И (ТЗ.Флаг = 0)  Тогда 
ТЗ.УстановитьЗначение(Сч,"Поставщик",ДокПост.Контрагент);
ТЗ.УстановитьЗначение(Сч,"Флаг",1);
ТЗ.УстановитьЗначение(Сч,"ЦенаЗак",ДокПост.Цена);

_ЦенаЗакБуфер = ДокПост.Цена;
_ТоварБуфер   = ДокПост.Номенклатура;
_КонтрБуфер   = ДокПост.Контрагент;
_Булево       = 1;                     
Сообщить(" Установлен флаг 1 "+ДокПост.Номенклатура);
Прервать;
ИначеЕсли ТЗ.Флаг = 1 Тогда
// Сообщить("Сработало1");
_Булево = 1;
Прервать;
КонецЕсли; 
КонецЦикла;
Если _Булево = 1 Тогда         
// Сообщить("Сработало1");
_Булево = 0;
Прервать;
КонецЕсли;
КонецЦикла;   
Если ТЗ.Итог("Флаг")=ТЗ.КоличествоСтрок() Тогда
Сообщить(" !!ALERT!! Cработало условие выхода  ");
Прервать; //цикл по документам
КонецЕсли;
Сообщить(Сч);
КонецЦикла;
//***********Заполним файл базы данных скомпоноваными значениями***************

ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
ДБФ.Добавить();
    ДБФ.Name  = Строка(ТЗ.Товар);
ДБФ.Firma = Строка(ТЗ.Фирма);
ДБФ.Sklad = Строка(ТЗ.Склад);
ДБФ.Kontr = Строка(ТЗ.Поставщик);
ДБФ.Cena  = ТЗ.ЦенаЗак;
ДБФ.Flag  = ТЗ.Флаг;
ДБФ.Записать();
КонецЦикла;

КонецПроцедуры  //СформироватьДанныеПоТоварам() 

//******************************************************************************
// Выгрузить()
//
// Параметры:
// 
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  ТекстОписания
//
Процедура Выгрузить() 

НачатьТранзакцию();
//************Структура файла БД для Товаров*****************
ДБФ = Создатьобъект("XBase");

ДБФ.ДобавитьПоле("Name", 2,100,);
ДБФ.ДобавитьПоле("Firma",     2,100,);
ДБФ.ДобавитьПоле("Sklad",     2,100,);
ДБФ.ДобавитьПоле("Cena",     1,15,2);
ДБФ.ДобавитьПоле("Kontr",     2,100,);
ДБФ.ДобавитьПоле("Flag",     1,1,);

ДБФ.СоздатьФайл("C:\dbUpload.dbf");
ДБФ.Записать();       
СформироватьДанныеПоТоварам(ДБФ);
/////////////////////////////////////////////////////////////
//************Структура файла БД для расчёты Покупатели******
ДБФПок = Создатьобъект("XBase");

ДБФПок.ДобавитьПоле("Kontr", 2,100,);
ДБФПок.ДобавитьПоле("Firma", 2,100,);
ДБФПок.ДобавитьПоле("Dolg",         1,15,2);
//
//ДБФПок.СоздатьФайл("C:\dbPokup.dbf");
//ДБФПок.Записать();     
//ВзаиморасчетыПокупатели(ДБФПок);
/////////////////////////////////////////////////////////////
//************Структура файла БД для расчёты Поставщики******
ДБФПост = Создатьобъект("XBase");

ДБФПост.ДобавитьПоле("Kontr", 2,100,);
ДБФПост.ДобавитьПоле("Firma", 2,100,);
ДБФПост.ДобавитьПоле("Dolg",     1,15,2);


//ДБФПост.СоздатьФайл("C:\dbPo3st.dbf");
//ДБФПост.Записать();     
//ВзаиморасчетыПоставщики(ДБФПост);
/////////////////////////////////////////////////////////////

//ОстаткиПоКассе(); 


ЗафиксироватьТранзакцию();
КонецПроцедуры //Выгрузить()
Записан

Когда мужчине плохо - он ищет женщин. Когда мужчине хорошо - его ищут женщины
Vertex
Коллежский секретарь
****

Карма: 12
Offline Offline

у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 373



Награды
« Ответ #95 : 03 Октябрь 2011, 18:17:50 »

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

Когда мужчине плохо - он ищет женщин. Когда мужчине хорошо - его ищут женщины
M@XX
burn let it all burn...
Действительный статский советник
********

Карма: 226
Offline Offline

Пол: Мужской
Сообщений: 4696


90027_veteran.gif 46859_medal1.gif

Your Buny Wrote


WWW Награды
« Ответ #96 : 04 Октябрь 2011, 16:07:32 »

Что то как то сомнительно перебором строк дока искать поставщика, Я бы все в запрос засунул.

Вечером конкретнее отпишу как.

Сколько по времени щас обработка работает?
Записан

1С: Предприятие. Доступно и всерьез!
ЧЕРЕЗМЕРНОЕ УПОТРЕБЛЕНИЕ ПИВА ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ
Vertex
Коллежский секретарь
****

Карма: 12
Offline Offline

у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 373



Награды
« Ответ #97 : 05 Октябрь 2011, 10:22:58 »

С базой из 16500 строк я подождал 1,5 часа прошло 1700 строк
короче около суток молотить будет.
Записан

Когда мужчине плохо - он ищет женщин. Когда мужчине хорошо - его ищут женщины
Vertex
Коллежский секретарь
****

Карма: 12
Offline Offline

у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 373



Награды
« Ответ #98 : 05 Октябрь 2011, 17:11:11 »

Оптимизировал слегка,
Код:
Процедура СформироватьДанныеПоТоварам(ДБФ)

ДокПост = СоздатьОБъект("Документ.ПоступлениеТМЦ");
    ТЗ     = СоздатьОБъект("ТаблицаЗначений");


// **************Запрос к регистру остатков***********************
    Запрос  = СоздатьОБъект("ЗАпрос");

ТекстЗапроса = "
|С НачДата По НачДата;
|Фирма = Регистр.ОстаткиТМЦ.Фирма;
|Склад = Регистр.ОстаткиТМЦ.Склад;
|Товар = Регистр.ОстаткиТМЦ.Номенклатура;
|Количество = Регистр.ОстаткиТМЦ.Количество;
|Поставщик = Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.Контрагент;
|Группировка Товар Без Групп;
|Группировка Фирма Без Групп;
|Группировка Склад Без Групп;
|Функция КОст = КонОст(Количество);
//|Условие (Фирма = ВыбФирма);
//|Условие (ВыбСклад = Склад);
|";
           
Если Запрос.Выполнить(ТекстЗапроса)=0 Тогда
Возврат;
КонецЕсли;

Если  Запрос.Выгрузить(ТЗ,0,0)=0 Тогда
Возврат;
КонецЕсли;

// *************Добавим к таблице 3 колонки*******************************
ТЗ.НоваяКолонка("ЦенаЗак","Число",10,2);
ТЗ.НоваяКолонка("Флаг","Число",1);
ТЗ.НоваяКолонка("Поставщик","Справочник.Контрагенты");
   
// *********Найдём последнего поставщика от которого приходил товар******************
ТЗ.ВыбратьСтроки();
    Сч        = 0;
_Булево   = 0;   
_СтрПоиска    = 0;
_ТоварБуфер   = "";
_КонтрБуфер   = "";
_ЦенаЗакБуфер = 0; 

ТЗ_Док = СоздатьОбъект("ТаблицаЗначений");

Пока ТЗ.ПолучитьСтроку()=1 Цикл
Сч = Сч + 1;       

Если ТЗ.Товар = _ТоварБуфер Тогда
ТЗ.УстановитьЗначение(Сч,"Поставщик",_КонтрБуфер);
ТЗ.УстановитьЗначение(Сч,"Флаг",1); 
ТЗ.УстановитьЗначение(Сч,"ЦенаЗак",_ЦенаЗакБуфер);
Сообщить("<<<< Установлен поставщик из буфера "+ ТЗ.Товар);
Продолжить;
КонецЕсли;

ДокПост.ОбратныйПорядок(1);
ДокПост.ВыбратьДокументы();
Пока ДокПост.ПолучитьДокумент()=1 Цикл 
   


ТЗ_Док.УдалитьСтроки();

СчСтр = 0;

ДокПост.ВыгрузитьТабличнуюЧасть(ТЗ_Док);

Если Тз_Док.НайтиЗначение(ТЗ.Товар,СчСтр,"Номенклатура")=0 Тогда
Продолжить;
Иначе
ТЗ.УстановитьЗначение(Сч,"Поставщик",ДокПост.Контрагент);
ТЗ.УстановитьЗначение(Сч,"Флаг",1);
ТЗ.УстановитьЗначение(Сч,"ЦенаЗак",Тз_Док.ПолучитьЗначение(СчСтр,"Цена"));

_ЦенаЗакБуфер = Тз_Док.ПолучитьЗначение(СчСтр,"Цена");
_ТоварБуфер   = ТЗ.Товар;
_КонтрБуфер   = ДокПост.Контрагент;

Сообщить(" Установлен флаг 1 "+Тз_Док.ПолучитьЗначение(СчСтр,"Номенклатура"));
Прервать;
КонецЕсли;
КонецЦикла; 


Если ТЗ.Итог("Флаг")=ТЗ.КоличествоСтрок() Тогда
Сообщить(" !!ALERT!! Cработало условие выхода  ");
Прервать; //цикл по документам
КонецЕсли;
Сообщить(Сч);
КонецЦикла;
//***********Заполним файл базы данных скомпоноваными значениями***************

ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку()=1 Цикл
ДБФ.Добавить();
    ДБФ.Name  = Строка(ТЗ.Товар);
ДБФ.Firma = Строка(ТЗ.Фирма);
ДБФ.Sklad = Строка(ТЗ.Склад);
ДБФ.Kontr = Строка(ТЗ.Поставщик);
ДБФ.Cena  = ТЗ.ЦенаЗак;
ДБФ.Flag  = ТЗ.Флаг;
ДБФ.Записать();
КонецЦикла;

КонецПроцедуры  //СформироватьДанныеПоТоварам() 

//******************************************************************************
// Выгрузить()
//
// Параметры:
// 
//
// Возвращаемое значение:
//  Нет
//
// Описание:
//  ТекстОписания
//
Процедура Выгрузить() 

НачатьТранзакцию();
//************Структура файла БД для Товаров*****************
ДБФ = Создатьобъект("XBase");

ДБФ.ДобавитьПоле("Name", 2,100,);
ДБФ.ДобавитьПоле("Firma",     2,100,);
ДБФ.ДобавитьПоле("Sklad",     2,100,);
ДБФ.ДобавитьПоле("Cena",     1,15,2);
ДБФ.ДобавитьПоле("Kontr",     2,100,);
ДБФ.ДобавитьПоле("Flag",     1,1,);

ДБФ.СоздатьФайл("C:\dbUpload.dbf");
ДБФ.Записать();       
СформироватьДанныеПоТоварам(ДБФ);
/////////////////////////////////////////////////////////////
//************Структура файла БД для расчёты Покупатели******
ДБФПок = Создатьобъект("XBase");

ДБФПок.ДобавитьПоле("Kontr", 2,100,);
ДБФПок.ДобавитьПоле("Firma", 2,100,);
ДБФПок.ДобавитьПоле("Dolg",         1,15,2);
//
//ДБФПок.СоздатьФайл("C:\dbPokup.dbf");
//ДБФПок.Записать();     
//ВзаиморасчетыПокупатели(ДБФПок);
/////////////////////////////////////////////////////////////
//************Структура файла БД для расчёты Поставщики******
ДБФПост = Создатьобъект("XBase");

ДБФПост.ДобавитьПоле("Kontr", 2,100,);
ДБФПост.ДобавитьПоле("Firma", 2,100,);
ДБФПост.ДобавитьПоле("Dolg",     1,15,2);


//ДБФПост.СоздатьФайл("C:\dbPo3st.dbf");
//ДБФПост.Записать();     
//ВзаиморасчетыПоставщики(ДБФПост);
/////////////////////////////////////////////////////////////

//ОстаткиПоКассе(); 


ЗафиксироватьТранзакцию();
КонецПроцедуры //Выгрузить()
Производительность где то в половину возросла
Записан

Когда мужчине плохо - он ищет женщин. Когда мужчине хорошо - его ищут женщины
M@XX
burn let it all burn...
Действительный статский советник
********

Карма: 226
Offline Offline

Пол: Мужской
Сообщений: 4696


90027_veteran.gif 46859_medal1.gif

Your Buny Wrote


WWW Награды
« Ответ #99 : 06 Октябрь 2011, 17:02:16 »

Вот эту строку удали еще быстрее пойдет, Ты ее все равно ни как не используешь
Код:
|Поставщик = Регистр.ОстаткиТМЦ.ТекущийДокумент.ПоступлениеТМЦ.Контрагент;

Блин ... Тут понял всетаки что Прямые SQL запросы рулят...


Что мне не нравиться... Это твой перебор по тЧ документа для поиска поставщика номенклатуры. (Я бы его запросом сделал но тут выяснил что 1С запрос не может выбрать в результат к примеру первые 10, а нам нужен всего 1 док.)

Код:
Сч = Сч + 1;
Тут ты видимо текущую строку ТЗ считаешь.
Надежнее использовать
Код:
ТекСтрТЗ = ТЗ.ТекущаяСтрока();



А вообще по логике Я бы сделал так:

1. Запрос по остатка ТМЦ (Собственно как и у тебя).

2. Выгружаешь запрос в ТЗ скажем "ТЗ_Пост"
ТЗ_Пост Сворачиваешь по полю "Товар".
Добавляешь  в ТЗ поле поставщик (ТЗ_Пост.НоваяКолонка("Поставщик","Справочник.Контрагенты");

4. "Твоим перебором по докам" заполняешь ТЗ поставщиками.

Этапами 3-4 мы уменьшили количество переборов документов.

5. Открываешь запрос на перебор результатов в цыкле
Код:
Пока Запрос.Группировка(1) = 1 Цикл

КонецЦикла;

6 Ну и собственно в самом цыкле заполняешь ДБФ файл а поле "поставщик" получаешь поиском по ТЗ_Пост.


В Итоге количество циклов уменьшено на два, переборов доков на "не знаю сколько раз"
 
Ну и получаеться что вот эта хрень не нужна:
Код:
    Сч        = 0;
_Булево   = 0;   
_СтрПоиска    = 0;
_ТоварБуфер   = "";
_КонтрБуфер   = "";
_ЦенаЗакБуфер = 0; 
« Последнее редактирование: 06 Октябрь 2011, 17:28:58 от M@XX » Записан

1С: Предприятие. Доступно и всерьез!
ЧЕРЕЗМЕРНОЕ УПОТРЕБЛЕНИЕ ПИВА ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ
Vertex
Коллежский секретарь
****

Карма: 12
Offline Offline

у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 373



Награды
« Ответ #100 : 06 Октябрь 2011, 17:18:48 »

А что тут можно другое предложить, чтобы быстро и качественно? Строит глазки
Записан

Когда мужчине плохо - он ищет женщин. Когда мужчине хорошо - его ищут женщины
M@XX
burn let it all burn...
Действительный статский советник
********

Карма: 226
Offline Offline

Пол: Мужской
Сообщений: 4696


90027_veteran.gif 46859_medal1.gif

Your Buny Wrote


WWW Награды
« Ответ #101 : 06 Октябрь 2011, 17:26:22 »

А что тут можно другое предложить, чтобы быстро и качественно? Строит глазки
См. выше Я дополнил пост
Записан

1С: Предприятие. Доступно и всерьез!
ЧЕРЕЗМЕРНОЕ УПОТРЕБЛЕНИЕ ПИВА ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ
M@XX
burn let it all burn...
Действительный статский советник
********

Карма: 226
Offline Offline

Пол: Мужской
Сообщений: 4696


90027_veteran.gif 46859_medal1.gif

Your Buny Wrote


WWW Награды
« Ответ #102 : 06 Октябрь 2011, 17:39:56 »

А ну и цену закупа тоже в пункте 3-4 получешь

Код:
ЦенаЗакБуфер = Тз_Док.ПолучитьЗначение(СчСтр,"Цена");
Записан

1С: Предприятие. Доступно и всерьез!
ЧЕРЕЗМЕРНОЕ УПОТРЕБЛЕНИЕ ПИВА ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ
Vertex
Коллежский секретарь
****

Карма: 12
Offline Offline

у пользователя 1 предупреждение
Пол: Мужской
Сообщений: 373



Награды
« Ответ #103 : 01 Ноябрь 2011, 15:11:34 »

Доброго времени.
Написал загрузку.
При загрузке создаётся документ ВводОстатковТМЦ,
но при проведении   в автоматическом режиме, не создаются партии, только при ручном проведении.
А проводить 1000 документов как то не хочется ручками. Подскажите как быть?
Записан

Когда мужчине плохо - он ищет женщин. Когда мужчине хорошо - его ищут женщины
M@XX
burn let it all burn...
Действительный статский советник
********

Карма: 226
Offline Offline

Пол: Мужской
Сообщений: 4696


90027_veteran.gif 46859_medal1.gif

Your Buny Wrote


WWW Награды
« Ответ #104 : 01 Ноябрь 2011, 17:07:18 »

Доброго времени.
Написал загрузку.
При загрузке создаётся документ ВводОстатковТМЦ,
но при проведении   в автоматическом режиме, не создаются партии, только при ручном проведении.
А проводить 1000 документов как то не хочется ручками. Подскажите как быть?
Мало информации... (Конфа? обработка проведения?)

Но на вскидку смотри в Доке процедуры ПриОткрытии, ВводНового, ПриЗаписи.
Из них могут вызываться процедуры относящиеся к формированию партий, при программном создании дока эти процедуры не срабатывают.
для этого при программном проведении выполни эти процедуры перед проведением.
Записан

1С: Предприятие. Доступно и всерьез!
ЧЕРЕЗМЕРНОЕ УПОТРЕБЛЕНИЕ ПИВА ВРЕДИТ ВАШЕМУ ЗДОРОВЬЮ
Страниц: 1 ... 5 6 [7] 8 9   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006-2008, Simple Machines LLC
rss | wap
Valid XHTML 1.0! Valid CSS!