Данный пример делался на обычных формах. Это пример для отчета, позже добавлю пример для обработки. Добавьте эту функцию в модуль объекта — отчета, и получите результат выборки в виде дерева значений. Чтобы получить результат в виде таблицы значений, вместо строчки рез = новый ДеревоЗначений; напишите рез = новый ТаблицаЗначений;.
1С (Код)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
функция получитьРезультатВВидеДерева()ЭКСПОРТ
//получим результат, аналогичный выведенному в табдок
Но если у вас не типовая конфигурация, или же, как я, привыкли работать методами, предоставляемыми платформой по возможности максимально их используя, где это имеет смысл, тогда вот так:
Ахтунг! На момент написания статьи данная обработка выгружает только остатки оптовых и НТТ складов. Потому что я спешил и большего мне не нужно было на этот момент. Если вам нужно выгружать розничные склады, пишите в комментариях, я сделаю доработку.
Тестировалась в УТП Украины. Простые формы. В УПП не работает, так как в ней нет функции «инициализироватьДокумент». Возможно, если будет не лень, доработаю, чтобы было независимо от конфигурации. При желании можете доработать под свою конфигурацию. самостоятельно, заменив эту функцию своим кодом. Так как обмен происходит через формат csv, обработка не зависит от платформы или установленных сторонних программ типа Майкрософт Офиса и т.д.
Полезно применять, например, если вы создали новую базу из старой без переноса документов. Перенесены только справочники и константы. И нужно до-внести остатки. Такой себе вариант свертки базы.
Как перенести в другую базу только справочники и константы без документов, а так же цены в том числе, ну и ещё пользователей со всеми их настройками, постараюсь в ближайшее время выложить.
Я выкладываю обработку бесплатно, но надеюсь, если она окажется полезной, Вы щелкните по кнопке соцсети, или обратите внимание на некоторые объявления.
Принцип работы :
Выгружается файл csv по указанному складу с остатками на конец указанной даты. Файл содержит перечень кодов номенклатуры и остатков по каждой позиции.
Загружается из файла в другую базу. Номенклатура совмещается по коду. При загрузке создаются два документа: Оприходование для положительных остатков и списание — для отрицательных. Склад в этих документах берется из реквизита «Склад» обработки. Дата документа устанавливается из реквизита «Дата остатков» обработки. Так как при загрузке создаются не только количества, но и суммы в документах оприходования и списания, нужно указать тип цен.
Внешний вид обработки переноса остатков товаров
После выполнения обработки открываются формы документа оприходования и списания. Они не записаны. Вы можете внести недостающие счета и заполнить другие реквизиты, а затем провести или записать эти документы. Или же просто закрыть без сохранения.
Пример делаю на 1с 8, вместе с подключением и отключением
Попытка Эксель = Новый COMОбъект(«Excel.Application»); Исключение Предупреждение(«MS Excel не установлен на компьютере!»,10); Возврат; КонецПопытки; Состояние(«Подключение к EXCEL»,50); Книга = Эксель.WorkBooks.Open(Путь); Лист = Книга.WorkSheets(1); КолСтрок=Лист.Cells(1,1).SpecialCells(11).Row; КолКолонок = Лист.Cells(1,1).SpecialCells(11).Column;
Возможно у кнопки, которую нажимали, или у реквизита, который редактировали, установлен флажок «изменяет данные». Он специально предназначен, чтобы установить модифицированность в «истина», если система сама не может определить, изменяет ли данные элемент.
Обычно такое возникает, если делаются различные вспомогательные формы, но вид формы — форма справочника или документа, а не произвольная форма. Мне например больше нравится, чтобы форма была формой справочника или документа — потому что тогда имеется доступ к реквизитам соответствующего объекта, чего в произвольной форме не будет.
Снимаем флажок, и можно закрывать форму, без сохранения элемента справочника.
Нужно вставить обработчик события самой табличной части, который называется «При начале редактирования». В нем есть параметр «Новая строка», что дает нам возможность выполнять некоторые действия только при добавлении новой строки. При этом сама строка уже существует,
Процедура СоставПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование) Если НоваяСтрока тогда текСтрока = ЭлементыФормы.Состав.ТекущиеДанные; Если не текСтрока = неопределено тогда текСтрока.ИсточникДанных = перечисления.СпособПолучения.ИзТабличнойЧасти; КонецЕсли; КонецЕсли; КонецПроцедуры
в отличии от обработчика «ПередНачаломДобавления», который можно использовать с тем же успехом, но код будет другой
То бишь, сами добавляем строку и устанавливаем параметры, что мне меньше нравится. Я приверженец использования типовых механизмов насколько это возможно.
Эта ошибка возникает не только при подключении через 1С, но и просто при попытке открыть файл через сетевой ресурс. Обычно это бывает, если ваш компьютер на XP, а сервер — виндовс семерка, либо наоборот, но не обязательно. Просто чаще бывает именно так.
Нужно зайти на компьютер-сервер —
Тобишь на тот компьютер, на котором файловая база 1с располагается, он и есть сервер в данном случае.
В нем зайти в реестр, то есть нажать сочетание клавиш windows + R, либо зайти «Пуск» и внизу в окне ввода набрать «cmd» и нажать «Enter», он же «Ввод», он же стрелка вниз и влево (перевод каретки).
В реестре перейти в раздел: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanServer\Parameters
найти там параметр под названием:
IRPStackSize
Если его нет — создать: Щелкнуть правой кнопкой мыши на свободном месте правой панели, и выбрать пункт «Создать — Параметр DWORD (32 бита)
Ввести наименование IRPStackSize в новой добавившейся строчке или же скопировать отсюда.
Важно — соблюдайте регистр букв. То есть большие и маленькие буквы как здесь указано, так и должны быть в наименовании в реестре.
Нажмите Enter
Нажмите ещё раз Enter или кликните двойным щелчком левой кнопки мыши по имени параметра IRPStackSize
или кликните правой кнопкой мыши по этой строке и выберите пункт «Изменить»
В появившемся окне выберите систему исчисления «Десятичная«, а значение напишите 50. По имеющейся у меня информации с других сайтов — это максимальное число одновременных подключений. Причем 1с 8 делает сразу несколько подключений — от 10 и больше. По проверенной мной информации, обычно это 24 открытых файла.
Нажмите ОК.
Закройте окно реестра.
Перезагрузите компьютер.
Ещё раз повторяю, так как многие, и я в том числе на этом спотыкались — это всё нужно делать на компьютере — на котором располагается папка общего доступа с базой 1С.
То же самое касается любых файлов, при доступе к которым не из 1с возникают подобные ошибки.
Вообще, если вы хотите использовать windows 7 для работы на ней файловой базы с количеством одновременно подключаемых пользователей от 3-х и выше, вышеперечисленных мер недостаточно. Нужно превратить операционную систему в некий файловый сервер, я бы сказал даже, в файловую помойку. Для этого придется поковыряться ещё.
Нужно установить следующие параметры в реестре:
1С (Код)
1
<br/><strong>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\size</strong><br/><code>Установитеодноиз значенийключа:1,2или 3.1= Минимальноеиспользованиепамяти 2= Сбалансированное3= Максимальная пропускная способность для общих файлов и приложений,подключающихся по сети</code><br/><strong>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SessionManager\MemoryManagement\LargeSystemCache</strong><br/><code>Для ключадоступнызначения0и 1.1= Максимальнаяпропускнаяспособностьдля использованияфайловпосети,0= Максимальная пропускная способность для приложений,работающих по сети.
Таким образом, чтобы пользователи могли использовать общие файлы и подключаться к базе данных 1С без ограничений, выставляем на компьютере, который хотим использовать в качестве файлового сервера такие значения:
Собственно у меня после такой настройки достаточно крупная контора уже несколько лет работает на файловой 1с8 с кучей пользователей. Хотелось бы сервер конечно для удобства регламентных заданий, но вот так.. настроил, людям хватает.
В версии УТ Украины 3.0 склады выводились в колонках. Многие пользователи считают это удобным вариантом. Как сделать то-же самое в 3.1 разобрался не сразу, поэтому, чтобы не забыть, решил сделать видео на эту тему.