Программистские этюды

Публикация № 142167

Разработка - Практика программирования

Рассматриваются задачи, связанные с учетом характеристик номенклатуры: 1) Обход итогов при партионном списании по ФИФО для пары Номенклатура+Характеристика 2) Обмен сведениями об остатках номенклатуры с помощью XML для пары Номенклатура+Характеристика Дополнительно. Внимание новичкам – типовая консоль запросов.

Посвящается сайту "Математические этюды" http://www.etudes.ru/

Все рассмотренные примеры отлаживались на конфигурации "Управление торговлей 10.3". Задачи взяты из жизни, а решения не претендуют на уникальность или универсальность. Тем более что, пока я писал статью, на ум приходили совсем уже другие решения... Smile

 Этюд 1. Обход итогов при партионном списании по ФИФО для пары Номенклатура+Характеристика

Есть определенная схема построения запроса при программировании метода списания стоимости товара по ФИФО. Она представлена на рис. 1.

рис. 1.

Понятно, что схема учебная – в жизни учет товаров более сложен. Так, например, в конфигурации «Управление торговлей» учет товара дополнительно может вестись в разрезе характеристик. Что это значит применительно к нашей задаче? А то, что добавляется еще один разрез учета – характеристика, отдельно по которой нужно учитывать  сумму и количество партии.

Дополнительный разрез учета добавляет проблем при использовании  стандартной схемы построения запроса. Подробно об этих проблемах описано в статье //infostart.ru/public/125988/ .

И замечу, что речь не идет о других способах конструирования запросов, как например:

//infostart.ru/public/99207/

или

http://www.nashe1c.ru/materials-view.jsp?id=312

Так вот, что я сделал. Пару Номенклатура+Характеристика однозначно определяет поле Характеристика, потому что Номенклатура = Характеристика.Владелец. Такое соответствие относится только к товарам, а к таре не относится – тару однозначно определяет сама Номенклатура. Поэтому в запросе я дополнительно реализую Группировочное поле в результирующей таблице, по которому беру Итоги (рис. 2,3).

рис. 2.

рис. 3.

  Далее в цикле по ГруппировочномуПолю Товар и Характеристику определяю так:

 
 Листинг 1.0

Товар и Характеристику надо определять как минимум для вывода сообщения по товару (таре), по которой не хватает остатка:

 
 Листинг 2.0

Далее все алгоритмы проходят по стандартной схеме списания по ФИФО. Как это реализовано в конфигурации УТ, я не анализировал. Подобную задачу решил для новой подсистемы учета транспортно-заготовительных расходов. Знаете, когда ТЗР распределяется по сумме товара? Вот это из этой оперы.

 *Идея использования рисунка схемы построения запроса взята из методических материалов курса обучения, который я проходил давным-давно. По части авторства: рисунок нарисован мною с нуля, схема сильно изменена по сравнению с источником.

 

 Этюд 2. Обмен сведениями об остатках номенклатуры с помощью XML для пары Номенклатура+Характеристика

Сперва постановка задачи, которую я давным-давно реализовывал… Привычная ситуация, когда при обращении клиента менеджер по продажам видит в информационной базе наличие товара по складам только своей компании, о наличии товара на складах поставщиков узнает по телефону. В ситуации, когда определенный вид товара поставляется только одной компанией-дистрибьютором, можно договориться с ней об электронном обмене информацией об остатках через интернет.

Я реализовал обмен информацией с помощью xml,  выгрузка и загрузка остатков происходила только для так называемых «свободных» остатков,  количество товара выгружалось (загружалось) с учетом характеристик товара; серии и качество товара учитывать не надо было.

В конфигурации УТ можно вести количественный учет товаров в разрезе дополнительных параметров, так называемых характеристик номенклатуры: цвет, размер и других потребительских свойств.

Для нас важно знать не только, сколько товара осталось в наличии на удаленном складе поставщика, но и какого, судя по потребительским характеристикам. Поэтому механизм выгрузки и загрузки данных должен учитывать характеристики товара. Учет по сериям (при выгрузке-загрузке) производить не нужно, так как эта информация не интересна нашему клиенту.

Вообще говоря, учет характеристик при выгрузке и загрузке файла обмена не считается тривиальной задачей, поскольку, если товар в разных информационных базах идентифицируется по совпадению артикула, то характеристики – только по одновременному совпадению названия свойства и значения показателя этого свойства. Например, если в одной базе характеристика «цвет обуви» задается как «Цвет», а в другой – «Цвет обуви», то для одного и того же 43 размера эти товары не будут идентифицированы как совпадающие. Потому что у них разные названия характеристики, которая определяет цвет обуви.

Таким образом, задача обрисовывается такая: при загрузке файла xml при совпадении названия характеристики и значения показателя характеристики с характеристикой товара текущей базы необходимо считать, что указанное количество свободного остатка относится к этой характеристике. Если хотя бы одна характеристика не совпадает, или нет одинаковых характеристик, то необходимо считать, что свободный остаток регистрируется по товару без характеристик. Считается, что для уточнения информации об остатках товаров без характеристик следует связываться с ответственным менеджером поставщика-дистрибьютора.

Теперь о реализации. Файл выгрузки представлен на рис. 4.

Рис. 4.

Видно, что при наличии остатка в разрезе характеристики – характеристика товара раскладывается на составляющие ее свойства и значения этих свойств. К примеру, для товара с артикулом «Б-130005» характеристика товара имеет свойства «Размер=36», «Полнота=5», «Тип4Кожи=Натуральная кожа».

Следует обратить внимание на название узла «Тип4Кожи». В программе «1С:Управление торговлей» свойство имеет название «Тип кожи», узнаваемое пользователем. XML-теги не определены жестко: разработчик вправе придумать свои собственные теги. Но по xml-стандарту название узлов в xml-файлах не должны содержать пробелов и других символов наподобие «!;%*()_+».

Поэтому для выгрузки свойств товара реализован механизм, который заменяет «некорректные» символы на цифры, а при загрузке остатков наоборот – цифры заменяет на символы. Кому интересно будет, отдельно выложу исходники для демонстрации идеи. Хотя считаю, что это слишком просто реализуется. Так как цифр имеется ограниченное количество (от 0 до 9), то такая замена может происходить только с ограниченным числом символов. Символы, не вошедшие в этот список, исключаются из названий свойств – при записи характеристики происходит проверка (рис. 5).

Рис. 5.

Теперь рассмотрим разработанные механизмы для загрузки сведений.

При загрузке xml-файл считывается, информация записывается во временную таблицу:

 
 Листинг 3.0

Дам пояснение. Для работы с XML-документами используется модель последовательного доступа, что означает следующее. При считывании структуры xml-файла:

1)      мы перебираем узлы сверху-вниз;

2)      мы не перескакиваем от узла к узлу, а целенаправленно анализируем: достигнуто «НачалоУзла» или «ТекстУзла»;

3)      когда проходим цикл по узлам, анализируем название узла.

Фактически запись и чтение данных из XML-документа производится «фрагментами» элементов. При этом очевидно, что при работе с XML-документами, имеющими сложную структуру, реализация процедур будет также сильно усложняться.

 

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

 
 Листинг 4.0

 

Прокомментирую. Номенклатура (или товар в нашем случае) определяется по переданному артикулу. С этим сложностей нет. А вот как быть с характеристикой? Каждая характеристика в терминах конфигурации УТ представляет собой набор свойств со своими значениями. Хранятся такие наборы в регистре сведений. И как бы ну очень хочется использовать что-то наподобие метода ТаблицыЗначений НайтиСтроки(ПараметрыОтбора), в параметры отбора которого можно передать загружаемый набор свойств со своими значениями. На выходе хотим получить определенную характеристику товара. Но не тут-то было! В параметры отбора нельзя передать загружаемый набор свойств – можно только одно свойство и его значение через Структуру. Выход – использовать запрос к нашему регистру сведений. А суть предложенного алгоритма – при обходе xml-узлов наращивать набор свойств и значений, передавать набор в запрос, проверять наличие очередного свойства и значения в регистре и так по кругу по всем загружаемым свойствам.

 

 Этюд 3. Дополнительно. Внимание новичкам – типовая консоль запросов.

 

Вы когда-нибудь обращали внимание, иногда при выполнении запроса в консоли запросов появляется окно сообщения: «Ожидается выражение «Выбрать» ?.. И даже номер строки указан, в которой происходит ошибка.

Рис. 6.

Так вот, консоль запросов позволяет обрабатывать только часть выделенного текста в запросе. Я использую эту возможность при просмотре результата временных и вложенных таблиц или при редактировании только части запроса, входя в конструктор выделенного текста запроса. Для просмотра временных таблиц следует закомментировать выражение «Поместить», выделить часть текста запроса и нажать «Выполнить». После просмотра следует не забыть удалить комментарии в строке «Поместить» (рис. 7). Вообще-то, об этой возможности консоли запросов написано в справке, но кто ж ее читал именно для консоли запросов?

Рис. 7.

Картинка для анонса любезно предоставлена по лицензии GNU:

http://ru.wikipedia.org/wiki/Файл:Universal_joint_transparant.gif

 

Всем добра! :)

 
 См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
0. Rustig 1487 03.07.12 15:31 Сейчас в теме
Рассматриваются задачи, связанные с учетом характеристик номенклатуры:
1) Обход итогов при партионном списании по ФИФО для пары Номенклатура+Характеристика
2) Обмен сведениями об остатках номенклатуры с помощью XML для пары Номенклатура+Характеристика
Дополнительно. Внимание новичкам – типовая консоль запросов.



Перейти к публикации

1. AleksSF 189 04.07.12 09:00 Сейчас в теме
Почему-то рисунки не видны
CaSH_2004; Sherdrada; +2 Ответить
2. Rustig 1487 04.07.12 10:28 Сейчас в теме
3. AleksSF 189 04.07.12 10:37 Сейчас в теме
7. Rustig 1487 04.07.12 15:03 Сейчас в теме
(3), (4) изображения выложил. в IE до сих пор не видно, в Мозиле - видно.
Арчи, про ссылки не понимаю как перебить - я картинки вставлял копи-пастом.
4. Арчибальд 2710 04.07.12 10:55 Сейчас в теме
(2) положи картинки в раздел "Изображения" и ссылки перещелкни.
5. Stamper 40 04.07.12 11:12 Сейчас в теме
вот черт побери, а я всё по инерции считал это "не найдено ВЫБРАТЬ" багом, а это фича =)))
спасибо
6. Модератор раздела support 04.07.12 14:19 Сейчас в теме
Картинка для анонса супер! Плюс )
21. samamoiloff 858 05.07.12 21:17 Сейчас в теме
(6) А почему картинка - супер? Не понял. Интересно. Намекните хоть...
8. motkot 53 04.07.12 19:34 Сейчас в теме
Rustig, если критику воспринимаешь правильно, то такая конструкция "Выборка.ГруппировочноеПоле.Владелец.Наименование" приводит к дополнительному обращению к БД, следовательно, приводит к дополнительным накладным расходам. Решение: выбирать все необходимые поля сразу в запросе.
9. alexk-is 6465 04.07.12 20:17 Сейчас в теме
+(8) Ещё хотелось бы добавить, что работать с РегистрСведений.ЗначенияСвойствОбъектов нужно через ВЫРАЗИТЬ()
Например,
ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК ...).Владелец = &Владелец
10. motkot 53 04.07.12 20:46 Сейчас в теме
(9) alexk-is, читал бегло, сразу бросилось в глаза первое...
11. Rustig 1487 04.07.12 21:41 Сейчас в теме
(9) не убедительно, :). Конструкция Выразить() предназначена для других ситуаций.
Хотя я не эксперт по технологическим вопросам... :)
13. alexk-is 6465 05.07.12 07:30 Сейчас в теме
(11) Для каких таких других?

В данном случае я пытаюсь тонко намекнуть, что следует избегать скрытых множественных соединенй в запросах. Например, при попытке выполнить запрос ЗапросПоХарактеристикам в УПП под MS SQL я получаю:
Построенный запрос к СУБД использует слишком много таблиц. Допустимо не более 256.

Посмотрите внимательно на тип данных измерения Объект: "ДокументСсылка, СправочникСсылка". Соответственно в запросе соединяются все таблицы по документам, справочникам и ещё, конечно, регистр сведений. Измерение Значение тоже составного типа, но там соединяется значительно меньше таблиц - около 15 справочников.

Такой запрос уже работает.
ВЫБРАТЬ
	ЗначенияСвойствОбъектов.Объект,
	ЗначенияСвойствОбъектов.Свойство,
	ЗначенияСвойствОбъектов.Значение.Наименование КАК Значение
ИЗ
	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
	ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.ХарактеристикиНоменклатуры).ПометкаУдаления = ЛОЖЬ
	И ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.ХарактеристикиНоменклатуры).Владелец = &Владелец
Показать
Было бы неплохо разобраться и с ЗначенияСвойствОбъектов.Значение.Наименование

ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Значение КАК ...).Наименование
14. Rustig 1487 05.07.12 08:57 Сейчас в теме
(13) спасибо! на будущее учту. вы все правильно написали. Я-то имел в виду, что конструкцию приведения типов Выразить() надо использовать только по необходимости, а в моем случае ее не было, судя по работоспособности алгоритма. Хотя теперь, если судить по тому, как устроен механизм запросов, я бы включил выражение Выразить() в запрос. Так что еще раз вам спасибо. Добавлю, что на момент отладки в регистре было мало данных, возможно поэтому ошибок не возникало.

а вас не смущает, что во второй задаче запрос доформировывается и вызывается каждый раз при обходе цикла?
16. alexk-is 6465 05.07.12 11:30 Сейчас в теме
(14)
а вас не смущает, что во второй задаче запрос доформировывается и вызывается каждый раз при обходе цикла?
Смысл этого действия не совсем понятен. Точнее так. В механизме реализации есть несколько недочетов. Например, если в ЗначениеУзла будет несколько КлючИЗначение, то текст запроса будет
ВЫБРАТЬ
    ЗначенияСвойствОбъектов.Объект,
    ЗначенияСвойствОбъектов.Свойство,
    ЗначенияСвойствОбъектов.Значение.Наименование КАК Значение
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
    ЗначенияСвойствОбъектов.Объект.ПометкаУдаления = ЛОЖЬ
    И ЗначенияСвойствОбъектов.Объект.Владелец = &Владелец
    И ЗначенияСвойствОбъектов.Объект В (&СписокХарактеристик)
    И ЗначенияСвойствОбъектов.Объект В (&СписокХарактеристик)
    И ЗначенияСвойствОбъектов.Объект В (&СписокХарактеристик)
    И ...
Показать


Кроме этого
Почему бы не передавать в запрос "загружаемый набор свойств" в виде ТаблицыЗначений и получить список подходящих характеристик?
У меня нет возможности проверить, но как мне кажется, вот такой запрос должен работать
ВЫБРАТЬ
	ТаблицаЗначений.Свойство КАК Свойство,
	ТаблицаЗначений.Значение КАК Значение
ПОМЕСТИТЬ ТаблицаЗначений
ИЗ
	&ТаблицаЗначений КАК ТаблицаЗначений
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
	ЗначенияСвойствОбъектов.Объект КАК Объект,
	ЗначенияСвойствОбъектов.Свойство КАК Свойство,
	ЗначенияСвойствОбъектов.Значение.Наименование КАК Значение
ПОМЕСТИТЬ СвойстваХарактеристик
ИЗ
	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
	ЗначенияСвойствОбъектов.Объект ССЫЛКА Справочник.ХарактеристикиНоменклатуры
	И ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.ХарактеристикиНоменклатуры).Владелец = &Владелец
	И ВЫРАЗИТЬ(ЗначенияСвойствОбъектов.Объект КАК Справочник.ХарактеристикиНоменклатуры).ПометкаУдаления = ЛОЖЬ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	СвойстваХарактеристик.Объект КАК Объект
ИЗ
	ТаблицаЗначений КАК ТаблицаЗначений
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ СвойстваХарактеристик КАК СвойстваХарактеристик
		ПО ТаблицаЗначений.Свойство = СвойстваХарактеристик.Свойство
			И ТаблицаЗначений.Значение = СвойстваХарактеристик.Значение

СГРУППИРОВАТЬ ПО
	СвойстваХарактеристик.Объект

ИМЕЮЩИЕ
	СУММА(1) = &КоличествоСвойств
Показать


Если что-то в запросе непонятно, спрашивайте...
18. Rustig 1487 05.07.12 12:01 Сейчас в теме
(16) отлично что вы увидели этот момент. пусть каждый желающий выскажется. Я для себя, найдя другое решение, решил ничего не изменять. Алгоритмов достижения результата может быть несколько.
12. Rustig 1487 04.07.12 21:43 Сейчас в теме
(8) критике рад! о чем вы пишите знаю, но никогда не применяю, потому что несущественно - документ проводится, глазом не успеете моргнуть :)
15. motkot 53 05.07.12 10:46 Сейчас в теме
(12) производительность системы не измеряется в "морганиях глазами". Попробуйте для начала использовать "замер производительности" до и после изменений в коде. Ответ получите объективно в цифрах.
17. Rustig 1487 05.07.12 11:58 Сейчас в теме
(15) все правильно вы пишите. иногда проверяю с помощью замера производительности. но как-то интуитивно: где-то считаю надо замерить, а где-то не замечаю разницы... оба ваши совета абсолютно верны и объективны. но не все программисты способны уделять время таким деталям. я не идеален :)
19. fixin 3977 05.07.12 17:59 Сейчас в теме
не знаю, пейсали автору или нет.

Когда делается списание с учетом характеристик, нужно делать обязательно отбор партий по серийным номерам документа.
Порой у товара может быть 10 000 серийников и отбор по хар-ке существенно ускоряет проведение.



Пусть использует, если нужно.
Текст запроса не вижу, потому не знаю...
20. Rustig 1487 05.07.12 19:22 Сейчас в теме
(19) опишите пожалуйста подробнее, :). Учет серий в рассмотренной подсистеме не предусмотрен, хотя в УТ отдельно ведется. заранее спасибо!
22. NCCSOFT 133 05.07.12 21:31 Сейчас в теме
К сожалению, не понял практическую полезность статьи (разве что для обучения). "Обход итогов списаний по ФИФО", и "сам алгоритм списания по ФИФО" разные вещи. И 1С 77...82 не способен быстро рассчитывать себестоимость (проверено на практике... тут всё подробно расписал: NCC:Бизнес-Аналитика (расчет себестоимости за 2 секунды +OLAP-инструмент)). И вообще SQL устарелая технология, я отказался от неё уже 3 года - только NO-SQL.
Мне понравилась статья на хабре: Производительность C++ vs. Java vs. PHP vs. Python. Тест «в лоб».
r := 0; for i := 0 to 9999 do for j := 0 to 9999 do r := ( r + ( i * j ) mod 100) mod 47;

Я не поленился, и сделал тесты еще на нескольких языках (включая 1С), и вот что вышло, результат теста (должно получиться r = 39):
Delphi 7, XE, XE2 - 4.7 секунды
C++, JAVA 7 Server - 4.7 секунды
PERL 5 - 72 секунды
PHP 5 - 58 секунд
1С 77 - 2230 секунд (ОФИГЕТЬ!!!)
1С 82 - 496 секунд (НО ТОЖЕ ОФИГЕТЬ!!)

FastScript 4 (от FastReport.ru) - 114 секунд
Flash AS 2.0 - 700 секунд


Всё тестировал на старом своем компьютере (Атлон 3200Гц / 3Гб ОЗУ)
Хотел даже написать статью на инфостарте, но руки не долши.
Делайте выводы :-)
madonov; DoctorRoza; sashocq; Rustig; CaSH_2004; +5 Ответить
23. Rustig 1487 06.07.12 13:19 Сейчас в теме
(22) спасибо за комментарий!
ваш комментарий очень полезен с практической точки зрения в плане обучения.
:) и у вас отличная программа (посмотрел видеоролик)! буду ее рекомендовать клиентам! это серьезно

а так еще немного "философии" добавлю, но это не только к вам относится :)
Из интервью http://www.livejournal.ru/themes/id/54277 : "Мой хороший знакомый, философ Александр Неклесса, дал определение, что образование - это встреча с ИНЫМ. Есть «я», и все что я знаю, представляю, умею. Когда я сталкиваюсь с чем-то непохожим на мои представления, у меня есть несколько разных способов столкновения. Я могу это уничтожить, проигнорировать или с этим встретиться. Если я встречаюсь, с тем, что не есть «я», а с иным, в этот момент и начинается настоящее образование."

Вы правильно заметили, "практическая полезность статьи" заключена "разве что для обучения". А для меня это еще и творческое самовыражение.
24. Rustig 1487 06.07.12 18:44 Сейчас в теме
Интересная и поучительная дискуссия развелась после комментария (22) на странице публикации Бизнес-Аналитики http://infostart.ru/public/70525/

Сохраню ее для истории.

Rustig 06.07.12 13:42
(0) хочется узнать, за счет чего перепроведение документов происходит быстрее?
я так это вижу:
1) у вас совершенно другая структура таблиц в базе,
2) у вас нет разного рода таблиц для хранения вспомогательной или другой справочной информации, используемой в документах,
3) и у вас в олап-кубе при проведении документа не проверяются разные флаги учетной политики, не производится расчет ПБУ 18, расчет НДС, не затрагиваются дополнительные регистры сведений (как при проведении документов, связанных с ОС, например).

Верно?

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

При всем при этом я нисколько не уменьшаю ценность вашей программы. Она для меня очевидна.
Заранее спасибо за ответ.
С уважением, Рустем Гумеров

42.
NCCSOFT 06.07.12 14:48

(41) Чтобы прийти к этому решению, пришлось отказаться от трех вещей (технологий, постулатов), и сделать "всё с нуля". Последняя 4-я вещь от которой нужно отказаться - это тормозной компонент OLAP-навигатор (который теперь единственное узкое место, поскольку его задача - тупо как "OLAP-Viewer", а он тормозит... из-за опять таки, старых технологий TDataSet, на основе которых он сделан).
1) Отказался от SQL
2) Отказался от регистров (сам документ и есть как регистр)
3) Загнал всю базу в ОЗУ (технология "in memory") и сделал расчет себестоимости с учетом доп.расходов.
Секрет написан мелким розовым шрифтом в разделе "Разработчикам" :-) Я пробовал сделать расчет себестоимости на языке SQL, для 100 движений работает, а для 1 миллиона нет.
У меня "проведение документов", наверное, не совсем корректно сказано - точнее сказать "расчет себестоимости с учетом дополнительных транспортных расходов", т.к. это ГЛАВНАЯ ЦЕЛЬ этой программы, и слабое место у 1С. Мои заказчики используют эту программу для принятия управленческих решений. Выручка, себестоимость, прибыль - могут рассчитаны у учетом НДС или без НДС.

Да, всё верно вы написали (41), документов ОС (учета основных средств) там вообще нет. А все остальные документы, типа ПКО, РКО и подобные простые, они двигают "+" или "-" различные оборотные показатели, которые OLAP сам подсчитает и покажет.
В расчете, помимо "расчета себестоимости", еще рассчитываются все остатки: товаров, денег, долгов, заявок, заказов.
И все эти показатели - отдельные колонки одной огромной таблицы, которая хранится в "ResDB.ncc" (первая таблица), а все длинные и повторяющиеся строки вынесены в словарик "ResDI.ncc" (вторая таблица). В итоге эти две таблицы занимают 285Мб, при общем базы DBF-файлов 1С в 7Гб.

43.
Rustig 06.07.12 15:59

я кстати, почему сразу спросил (41) - потому что сам об этом задумывался.
и еще, получается чтобы рассчитать себестоимость в 1С требуются следующие телодвижения:
1. Заполнить документ(-ы) в 1С --> 2. Провести документ(-ы) в 1С --> 3. Рассчитать себестоимость по закрытию месяца

С использованием вашей программы:
1. Заполнить документ(-ы) в 1С --> 2. Провести документ(-ы) в 1С --> 3. Выгрузить из 1С и загрузить в Олап-куб --> 4. Рассчитать себестоимость в Олап-кубе

То есть момент проведения документов в 1С (пункт 2) - никак не избежать.
И всякий раз, чтобы использовать вашу программу, надо загружать актуальные данные из 1С. Все верно?

44.
NCCSOFT 06.07.12 16:17

(43) У всех заказчиков ночью запускается обработка выгрузки всех документов в "NCC:Бизнес-Аналитику", и менеджеры работают с актуальными данными (без учета текущего дня). Если необходимы данные "на данную минуту", то они могу выгрузить данные в ручном режиме.

Поскольку, экспорт документов идет только если они проведены, то да, пункт 2 "проведение документа" необходим. Но программа "NCC:Бизнес-Аналитика" не нуждается в движениях регистров или бух-проводок, и она их не выгружает, т.к. при запуске "NCC:Бизнес-Аналитика" будет произведен расчет.

Экспорт данных из 1С сделан для 1С 77 "Торговля и Склад" или "Комплексная конфигурация". В принципе, если у кого есть желание, можно написать экспорт данных из 1С 82 или других любых программ учета.
Показать
26. Stamper 40 10.07.12 17:42 Сейчас в теме
(22) NCCSOFT, любопытно про NO-SQL
известны ли примеры бизнес-программ на таких СУБД? если можно, ссылки дайте плз
27. NCCSOFT 133 12.07.12 14:39 Сейчас в теме
(26) NO-SQL означает "Not Only SQL" (т.е. не только SQL, в SQL тоже есть плюсы и полность отказываться было бы глупо).
Почитайте на хабре. Я сейчас делаю программу "NCC:Предприятие" ("убица 1С 8.3") (почти шутка) на этих принципах :-) только не смейтесь, это реально так. Она по функционалу как "1С Торговля и склад + финансы + логистика + закупки + заказы + упр.зарплата и персонал + производство + выгрузка в 1С 8.2 Бухгалтерию + CRM + CMS".

Это и моё творчество, и работа.

Примеры ссылок именно "бизнес-программ" не могу дать, т.к. не видел. Оно и понятно - это "на острие атаки", а всякие "соц.сети" не в счет.
28. Stamper 40 12.07.12 20:53 Сейчас в теме
(27) NCCSOFT, я в курсе! по-этому и написал NO-SQL а не No-SQL ;) ну Вы поняли
если есть что показать -- вышлите на stamper собака ukr точка net, пожалуйста
а если еще нет, то не забудьте вписать мою почту в лист рассылки :)
29. NCCSOFT 133 12.07.12 21:17 Сейчас в теме
(28) Круто, реально круто! Впишу, обязательно впишу, как будут новости - вы первый в списке! Даже мои друзья (мы празновали мое 36-ти летие, отдыхали на Обском Море), они не в первых списках. Они сказали, что если бы узнали чем я занимаюсь (в советское время) - они вынуждены были сообщить об это в соответствующие органы... ИИ рулит...
25. zigomodo 10.07.12 16:17 Сейчас в теме
Спасибо за статью,все разложено как по полочкам. Спасибо автору за то,что не поленился написать много букв)
32. Sasha255n 16.09.13 17:22 Сейчас в теме
(25) zigomodo, Это иррония или скарказм, или вы взаправду все))))?
30. nataon 13.07.12 09:09 Сейчас в теме
31. Al-X 20.06.13 14:30 Сейчас в теме
Спасибо Автору !! На некоторые вещи "прям глаза открылись"...
33. Sasha255n 16.09.13 17:23 Сейчас в теме
(31) Al-X, Открыл глаза .... Да.... Это иррония или скарказм, или вы взаправду все )))) ?
34. Sanario 21 15.09.16 09:27 Сейчас в теме
Эх. Спасибо за статью. Одно пожелание - скриншоты бы покрупнее - невидно нифига ничего.
Оставьте свое сообщение

См. также

Список заказов покупателей (новый взгляд) Промо

Рабочее место Монитор заказов Оптовая торговля Монитор заказов Оптовая торговля v8 v8::ОУ КА1 УТ10 УУ Платные (руб)

Внешняя обработка "Список заказов покупателей". Фишка в том, что на одной форме отображается структура связанных документов с указанием контрагента. В этом окне также есть список товаров по заказу. Видны статусы заказов: исполнен, выполняется, черновик.

1100 руб.

16.08.2017    24222    68    60    

3 онлайн-курса по 1С-программированию: обмен данными, расчетные задачи и бухгалтерские задачи с 12 мая по 8 июля 2020 г.

Практика программирования v8 Бесплатно (free)

Пакет из 3-х курсов по 1С-программированию. Основная цель - сформировать у слушателей практические навыки, связанные с реализацией задач обмена для прикладных решений, работающих на платформе “1С:Предприятие”, а также с разработкой прикладных решений, предназначенных для автоматизации расчета заработной платы и задач бухгалтерского учета.

22.04.2020    4491    23    Infostart    2    

[Расширение] УТ 11.4. Счет на оплату с факсимиле

Печатные формы документов Оптовая торговля v8 v8::ОУ УТ11 Абонемент ($m)

Счет на оплату с факсимиле. Готовый шаблон для собственных доработок. Расширение для УТ 11.4.

1 стартмани

12.04.2020    1765    5    Rustig    4    

[Расширение] БП 3.0. Список счетов/ Список реализаций + Связанные документы

Рабочее место Оптовая торговля v8 v8::БУ БП3.0 БУ Абонемент ($m)

Список счетов / список реализаций + Структура подчиненности в одном окне. Расширение для программы БП 3.0.

2 стартмани

09.04.2020    1859    2    Rustig    6    

Как свернуть базу УТ 10.3 Промо

Свертка базы v8 v8::ОУ УТ10 Россия УУ Платные (руб)

Как свернуть УТ 10.3. Цель свертки - свернуть остатки по товарам и по взаиморасчетам с контрагентами.

2000 руб.

04.04.2019    14696    94    15    

[Расширение] УНФ. Список заказов + Структура подчиненности

Монитор заказов Рабочее место v8 УНФ УУ Абонемент ($m)

Список заказов покупателей + Структура подчиненности в одном окне. Расширение для программы Управление нашей фирмой, редакция 1.6

1 стартмани

05.04.2020    2635    6    Rustig    0    

Удаление справочников для любых баз на управляемых формах

Чистка базы v8 v8::УФ 1cv8.cf Абонемент ($m)

Удаление справочников без проверки связанных ссылок для любых баз на УФ.

1 стартмани

04.02.2020    2121    6    Rustig    1    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    18812    0    ids79    26    

Загрузка товаров, остатков и цен. Розница 2.2, 2.3 Промо

Обработка документов Обработка справочников Загрузка и выгрузка в Excel Розничная торговля Учет ТМЦ Розничная торговля Учет ТМЦ v8 v8::УФ Розница Россия УУ Платные (руб)

Загрузка товаров, остатков и цен из макета табличного документа (из эксель "вручную") + макет ценника со штрихкодом. Розница 2.2.

1100 руб.

08.04.2019    12722    19    4    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    18290    0    John_d    22    

Последовательности событий. Шпаргалка

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    13265    0    kuzyara    33    

Подсистема учета характеристик. Стремление к совершенству

Чистка базы Практика программирования v8 v8::ОУ v8::ПВХ УТ10 УУ Бесплатно (free)

Цель - почистить задвоенность характеристик и предотвратить дальнейшее ее появление.

16.12.2019    3738    0    Rustig    0    

30 задач. Странных и не очень

Практика программирования v8 Бесплатно (free)

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    14515    0    YPermitin    72    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    6670    0    Sibars    19    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    28028    0    Yashazz    45    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    35407    0    unichkin    45    

Удаление документов для любых баз на управляемых формах

Обработка документов Чистка базы v8 v8::УФ Розница УНФ БП3.0 ЗУП3.x Абонемент ($m)

Удаление и распроведение документов для любых баз на УФ.

1 стартмани

13.09.2019    5051    68    Rustig    21    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

Программное создание практически всех популярных элементов формы.

06.09.2019    39292    0    rpgshnik    62    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    41433    0    ids79    54    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    27802    0    tormozit    100    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    24249    0    YPermitin    24    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

Три интересных (или странных) костыля в коде, которые могут помочь в повседневных и не очень задачах.

03.09.2019    22999    0    YPermitin    80    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

В сложных логических выражениях нередко самому автору спустя какое-то время тяжело разобраться, не говоря уже о других программистах. Предлагаемая методика позволяет повысить наглядность таких выражений путем оформления в виде И-ИЛИ дерева и одновременно выполнять их рефакторинг.

20.09.2012    75336    0    tormozit    129    

Отслеживание выполнения фонового задания

Практика программирования Универсальные функции Разработка v8 1cv8.cf Бесплатно (free)

Запуск фонового задания из модуля внешней обработки. Отслеживание выполнения задания в виде прогресса, расположенного на форме.

17.08.2019    28107    0    ids79    16    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    64515    0    ids79    40    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    29104    0    avalakh    22    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    46222    0    tormozit    38    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    48394    0    ids79    11    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    31272    0    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    23722    0    YPermitin    13    

Список заказов поставщикам (новая форма) + два ноу-хау для разработчиков Промо

Рабочее место Дебиторская и кредиторская задолженность Оптовая торговля Дебиторская и кредиторская задолженность Оптовая торговля v8 v8::ОУ КА1 УТ10 УУ Платные (руб)

Представлена внешняя обработка - "Список заказов поставщикам (новая форма)". Удобство заключается в том, что в одном окне списка отображается структура всех связанных документов с указанием контрагента (заказ поставщику - поступление товаров - заказ покупателя - реализация товаров - оплата товара покупателем). В этом же окне отображается список товаров с заказанным количеством и ценами. Имеется возможность видеть статусы заказов по цветам (исполнен, выполняется, черновик). Форму легко встроить в типовую конфигурацию.

1100 руб.

31.08.2017    19636    18    18    

"Меньше копипаста!", или как Вася универсальную процедуру писал

Практика программирования Разработка v8 v8::СКД 1cv8.cf Бесплатно (free)

Программист Вася разбирает подход создания универсальных методов на примере программного вывода СКД.

04.07.2019    17615    0    SeiOkami    50    

Создание отчетов с помощью СКД - основные понятия и элементы

Практика программирования Математика и алгоритмы v8 v8::СКД Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    45710    0    ids79    20    

Многопоточное ускорение однопользовательских нагрузок в 1С + Microsoft SQL Server 2017

Практика программирования Производительность и оптимизация (HighLoad) v8 v8::Запросы Бесплатно (free)

Взаимодействие с Microsoft SQL Server нередко вызывает трудности у 1С-ников, а потому интересны любые моменты, связанные с его использованием. О своем опыте работы с новым SQL Server 2017 участникам конференции Infostart-2018 рассказал директор ООО «Аналитика софт» Дмитрий Дудин.

11.06.2019    22752    0    dmurk    144    

Как сделать из &НаКлиентеНаСервереБезКонтекста почти &НаКлиентеНаСервере Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Как сделать метод формы, доступный на клиенте и на сервере одновременно, и сохранить при этом удобство разработки

10.09.2017    42190    0    tormozit    74    

Регистры накопления. Структура хранения в базе данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Структура хранения регистров накопления в базе данных для платформы 1С:Предприятие 8.x. Первая часть в серии публикаций.

16.05.2019    38228    0    YPermitin    30    

Выполнение внешней обработки в фоновом задании

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Подробное описание подхода к созданию длительной операции на основе внешней обработки. Реализация протестирована на 1С 8.3.12.1714 (x64).

11.05.2019    26448    0    Eret1k    23    

Доработки УТ 10.3, улучшающие работу пользователей

Оптовая торговля Обработка документов Рабочее место Оптовая торговля v8 v8::ОУ УТ10 УУ Абонемент ($m)

Как показать прибыль по заказу, как показать прикрепленные файлы к документам - когда документов по заказу много, как показать расчет процентов по менеджерам - и все в одном окне УТ 10.3.

3 стартмани

26.04.2019    8896    9    Rustig    12    

Выгрузка документа по условию

Практика программирования Разработка v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    15327    0    m-rv    2    

Как прикрутить ГУИД к регистру сведений

Практика программирования Перенос данных из 1C8 в 1C8 Разработка v8 Бесплатно (free)

... и немного теории обмена данными. В частности, разберем боль всех, кто пишет небанальные обмены данными: как набору записей регистра сведений назначить гуид и далее использовать его в обмене для идентификации этого набора.

16.04.2019    19089    0    m-rv    17    

О расширениях замолвите слово...

Практика программирования Разработка v8 Бесплатно (free)

О чём стоит задуматься при принятии решения о создании расширения конфигурации…

07.04.2019    31896    0    ellavs    126    

Git-репозитории для 1С-кода (опыт использования при небольших проектах)

Практика программирования v8 Бесплатно (free)

Инструкции по взаимодействию с Git-репозиторием, которые писались для тех наших программистов, которые вообще никогда не работали с Git (руководства в духе "Как получить код из git-репозитория?", "Как отправить код в git-репозиторий")...

28.03.2019    25188    0    ellavs    88    

Трюки с внешними источниками данных

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Некоторые трюки для преодоления ограничений внешних источников данных.

14.03.2019    28718    0    YPermitin    53    

Возможности типовых шаблонов ограничения доступа на уровне записей (RLS)

Практика программирования БСП (Библиотека стандартных подсистем) Роли и права v8 v8::Права Бесплатно (free)

Краткий обзор применения типовых шаблонов ограничения доступа на уровне записей в конфигурациях, созданных на базе БСП: #ПоЗначениям, #ПоНаборамЗначений, #ПоЗначениямРасширенный, #ПоЗначениямИНаборамРасширенный

03.02.2019    34402    0    ids79    9    

Новый подход к обмену данными EnterpriseData

Практика программирования Обмен через XML v8 v8::УФ Россия Бесплатно (free)

Хочу предложить Вашему вниманию цикл статей, посвященных обмену данными через универсальный формат (EnterpriseData или ED).

14.12.2018    37697    0    ids79    72