Имя: Пароль:
1C
1C 7.7
v7: Свертка базы ТИС
0 DeMi4
 
08.11.11
19:40
Пытаюсь делать свертку базы выгружаю данные из регистра Партии в DBF файл но как быть с ценами ведь есть к примеру 3 товара по 3 рубля и 4 товара по 6 рублей при этом номенклатура одна и таже как быть с этими товарами.
1 KRV
 
08.11.11
19:42
Случаем не путаешь себестоимость по партиям с ценами номенклатуры?
2 DeMi4
 
08.11.11
19:42
Что если из запроса выгрузить в ТЗ там найти среднее по ценам и выгрузить уже потом в файл
3 FN
 
08.11.11
19:45
(2) ничего страшного. Просто получишь себестоимость "по среднему".
Если в условиях задачи это допустимо - то вперед!
4 DeMi4
 
08.11.11
19:47
А если бы это было недопустимо то что бы вы предложили сделать
5 Злопчинский
 
08.11.11
19:49
(2) что же вы убваетесь так, вы же не убьетесь...
.
чем штатна ясвертка не угодила?
6 Злопчинский
 
08.11.11
19:49
(4) посмотри в сторону документов ввода остатков - там все есть!
7 FN
 
08.11.11
19:49
(4) после свертки создать две партии, одну по 6, другую по 3
8 DeMi4
 
08.11.11
21:29
Вот с помощью такого когда делаю выгрузку в DBF файл есть ли какие то тут ошибки только совсем недвано просто начал более менее серьезно изучать 1С

Процедура Сформировать()
   Перем Запрос, ТекстЗапроса, Таб;
   //Создание объекта типа Запрос
   Запрос = СоздатьОбъект("Запрос");
   ТекстЗапроса =
   "//{{ЗАПРОС(Сформировать)
   |Период с ВыбНачПериода по ВыбКонПериода;
   |Фирма = Регистр.ПартииНаличие.Фирма;
   |МОЛ = Регистр.ПартииНаличие.МОЛ;
   |Номенклатура = Регистр.ПартииНаличие.Номенклатура;
   |Партия = Регистр.ПартииНаличие.Партия;
   |Поставщик = Регистр.ПартииНаличие.Поставщик;
   |Количество = Регистр.ПартииНаличие.Количество;
   |СуммаУпр = Регистр.ПартииНаличие.СуммаУпр;
   |СуммаРуб = Регистр.ПартииНаличие.СуммаРуб;
   |СуммаБезНДС = Регистр.ПартииНаличие.СуммаБезНДС;
   |СРозн = Регистр.ПартииНаличие.СРозн;
   |БазоваяЕдиница = Регистр.ПартииНаличие.Номенклатура.БазоваяЕдиница;
   |Функция КоличествоКонОст = КонОст(СуммаУпр);
   |Группировка Номенклатура;
   |"//}}ЗАПРОС
   ;
   // Если ошибка в запросе, то выход из процедуры
   Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
       Возврат;
   КонецЕсли;
   
   //Создадим файл выгрузки
   Файл=СоздатьОбъект("XBASE");
   Файл.ДобавитьПоле("NOMEN","S",70,0);
   Файл.ДобавитьПоле("KOL","N",15,2);
   Файл.ДобавитьПоле("SUPR","N",15,2);
   Файл.ДобавитьПоле("SRUB","N",15,2);
   Файл.ДобавитьПоле("SROZN","N",15,2);
   Файл.СоздатьФайл("d:\Work1C\Upload.dbf");
   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   
   Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Номенклатура
       Таб.ВывестиСекцию("Номенклатура");
       Файл.Добавить();
       Файл.NOMEN=Запрос.Номенклатура.Наименование;
       Файл.УстановитьЗначениеПоля("KOL",Запрос.Количество);
       Файл.УстановитьЗначениеПоля("SUPR",Запрос.СуммаУпр);
       Файл.УстановитьЗначениеПоля("SRUB",Запрос.СуммаРуб);
       Файл.УстановитьЗначениеПоля("SROZN",Запрос.СРозн);        
       Файл.Записать();
   КонецЦикла;
   
   // Заполнение полей "Итого"
   Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Файл.ЗакрытьФайл();
   Таб.Показать("Сформировать", "");
КонецПроцедуры
9 DeMi4
 
08.11.11
21:29
Как все таки это среднее достать
10 ТакВотЖе
 
08.11.11
21:45
а нафига в файл выгружать? какое отношение файл имеет к свертке базы?
в запросе у тебя пока что только количество конечное вычисляется, сумм там вообще нет ни одной.
11 ТакВотЖе
 
08.11.11
21:46
О, прошу пардону, это оказывается сумма у тебя количеством называется)
12 DeMi4
 
08.11.11
21:47
Да не там исправить надо. А суть в том что база правленная и решили что остатки из рабочей достанем и запишем их в новую базу поэтому и выгрузка идет в файл
13 ТакВотЖе
 
08.11.11
21:49
хм.. ну, если нужны остатки в разрезе партий, то делай группировку по партиям, и по количеству функцию тоже сделай, а то у тебя там вместо количества сейчас чушь пишется.
14 ТакВотЖе
 
08.11.11
21:51
хотя, у тебя и вместо суммы сейчас тоже чушь пишется)
15 DeMi4
 
08.11.11
23:06
Подскажите пожалуйста используя такой запрос:

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

   // Подготовка к заполнению выходных форм данными запроса
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка(1) = 1 Цикл
       // Заполнение полей Номенклатура
       Таб.ВывестиСекцию("Номенклатура");
   КонецЦикла;
   // Заполнение полей "Итого"
   Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Таб.Показать("Сформировать", "");
КонецПроцедуры

И после деления на количество я получу среднюю цену или нет?
16 zak555
 
08.11.11
23:10
(15) открой отчёт отстатки товаром
там есть "средня цена "
17 ТакВотЖе
 
08.11.11
23:11
именно её и получишь.
только непонятно, а нафига она тебе?)
18 DeMi4
 
08.11.11
23:20
Ну а как тогда остатки перенести
19 DeMi4
 
08.11.11
23:20
Со средней ценой и перенесу
20 ТакВотЖе
 
08.11.11
23:26
вообще-то в документе по вводу остатков нет никакой цены, там как раз сумма.
21 DeMi4
 
09.11.11
09:26
Теперь по формированию файла

выполняется следующий код

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

   // Подготовка к заполнению выходных форм данными запроса
   Файл=СоздатьОбъект("XBASE");
   Файл.ДобавитьПоле("NOMEN","S",70,0);
   Файл.ДобавитьПоле("MOL","S",100,0);
   Файл.ДобавитьПоле("KOL","N",15,3);
   Файл.ДобавитьПоле("SUMMAUPR","N",15,2);
   Файл.ДобавитьПоле("SUMMARUB","N",15,2);
   Файл.Добавитьполе("SROZN","N",15,2);
   Файл.СоздатьФайл("d:\Work1C\Partii.dbf");
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Сформировать");
   // Заполнение полей "Заголовок"
   Таб.ВывестиСекцию("Заголовок");
   Состояние("Заполнение выходной таблицы...");
   Таб.Опции(0, 0, Таб.ВысотаТаблицы(), 0);
   Пока Запрос.Группировка(1) = 1 Цикл
       Пока Запрос.Группировка(2) = 1 Цикл
           Таб.ВывестиСекцию("Номенклатура");
           Файл.Добавить();
           Файл.NOMEN=Запрос.Номенклатура.Наименование;
           Файл.MOL=Запрос.МОЛ.ПолнНаименование;
           Файл.KOL=Запрос.КоличествоКонОст;
           Файл.SUMMAUPR=Запрос.СуммаУпрКонОст;
           Файл.SUMMARUB=Запрос.СуммаРубКонОст;
           Файл.SROZN=Запрос.СРознКонОст;
           Файл.Записать();
       КонецЦикла;
   КонецЦикла;
   // Заполнение полей "Итого"
   Таб.ВывестиСекцию("Итого");
   // Вывод заполненной формы
   Таб.ТолькоПросмотр(1);
   Файл.ЗакрытьФайл();
   Таб.Показать("Сформировать", "");

При записи в файл попадают группу как от этого можно избавится чтобы попадали только элементы.
22 ДенисЧ
 
09.11.11
09:31
|Группировка Номенклатура буз групп;
23 DeMi4
 
09.11.11
09:37
а для группировки МОЛ не надо ставить без групп?
24 1Сергей
 
09.11.11
09:48
(23) надо, т.к. справочник Сотрудники многоуровневый
25 DeMi4
 
09.11.11
09:55
а какие файлы из базы надо удалить перед сверткой
26 1Сергей
 
09.11.11
09:57
(25) эээ... Чего удалять? пригласи-ка лучше специалиста
27 DeMi4
 
09.11.11
10:02
Ну по методике надо в базе в которую надо переносить остатки надо удалить файлы подскажите какие именно